|
 88.3 Кб |
|
| Здравствуйте Уважаемое сообщество.
Мне нужно заменить все адреса рисунков в html коде, Сам код содержится в ячейке таблицы.
sql файл который создаёт таблицу прикрепил.
в html коде все рисунки вида
<img height="262" src="/lessons/les1689/01.jpg" width="450" />
<img height="33" src="/lessons/les1689/02.jpg" width="442" />
<img height="23" src="tools/Elliptical Marquee.jpg" width="27" />
...
|
нужно заменить на
<img height="262" src="images/lessons/les1689/01.jpg" width="450" />
<img height="33" src="images/lessons/les1689/02.jpg" width="442" />
<img height="23" src="images/tools/Elliptical Marquee.jpg" width="27" />
...
|
Но замены нет, просто в строке всё работало, в ячейке замены не происходит
<?php
header("Content-Type: text/html; charset=UTF-8");
$conn = mysql_connect ("localhost", "root", "")
or die ("Соединение не установлено!");
mysql_select_db("bd_photoshop-portal", $conn);
$query = "SELECT * FROM material_content_into3";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
if(mysql_num_rows($cat))
{
while($catagory = mysql_fetch_assoc($cat))
{
// preg_match_all('#src="([^"]+)"#i', $catagory['Field 3'], $matches); // показывает ссылку для изображения
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $catagory['Field 3']); // Замена адреса изображения в строке
// <img height="547" src="/lessons/les1677/1.jpg" width="450" /> менняется на
// <img height="547" src="/images/lessons/les1677/1.jpg" width="450" />
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)tools/#i', '$1/images/tools/', $catagory['Field 3']);
//$newField_3 = array();
//if (sizeof($matches[1]))
// foreach($matches[1] as $link){
// $newField_3[] = $link;
// echo $link."<br />";
// }
// $newField_3 = $link;
// Запрос для обновления
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";
if(!mysql_query($query))
{
exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
}
echo 'Запрос выполнен успешно';
}
}
?>
|
Замена происходит но срабатывает она только на 1 запись либо
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)tools/#i', '$1/images/tools/', $catagory['Field 3']);
|
либо
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $catagory['Field 3']);
|
Почему замена не выполняется в 2 строках | |
|
|
|
|
 88.3 Кб |
|
|
для: pautina
(12.01.2012 в 17:02)
| | Ни могли бы вы посмотреть этот скрипт, он позволяет делать замену в адресах рисунков.
Файл который формирует таблицу прикрепил.
<?php
header("Content-Type: text/html; charset=UTF-8");
$conn = mysql_connect ("localhost", "root", "")
or die ("Соединение не установлено!");
mysql_select_db("bd_photoshop-portal", $conn);
$query = "SELECT * FROM material_content_into3";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
if(mysql_num_rows($cat))
{
while($catagory = mysql_fetch_assoc($cat))
{
// preg_match_all('#src="([^"]+)"#i', $catagory['Field 3'], $matches); // показывает ссылку для изображения
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $catagory['Field 3']); // Замена адреса изображения в строке
// <img height="547" src="/lessons/les1677/1.jpg" width="450" /> менняется на
// <img height="547" src="/images/lessons/les1677/1.jpg" width="450" />
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)tools/#i', '$1/images/tools/', $catagory['Field 3']);
// Запрос для обновления
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";
if(!mysql_query($query))
{
exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
}
echo 'Запрос выполнен успешно';
}
}
?>
|
Замена происходит но срабатывает она только на 1 запись либо
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)tools/#i', '$1/images/tools/', $catagory['Field 3']);
|
либо
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $catagory['Field 3']);
|
Почему замена не выполняется в 2 строках одновременно,
а то сейчас приходится коментарить 1 строку, запускать скрипт и затем коментарить 2 строку и опять запускать скрипт. | |
|
|
|
|
|
|
|
для: pautina
(18.01.2012 в 15:00)
| | ну так во втором и последующих случаях нужно уже работать не с $catagory['Field 3'], а с $newField_3.
Вот так в данном случае:
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $newField_3 );
|
вообще-то эта тема к форуму РНР относится, а не MySQL... | |
|
|
|
|
|
|
|
для: Lotanaen
(18.01.2012 в 15:17)
| | с
$newField_3 = preg_replace('#(<img\s[^>]*?\bsrc\s*=\s*[\'"]?)/lessons/#i', '$1/images/lessons/', $newField_3);
|
замена не сработала
может нужно использовать не $newField_3 а catagory['newField_3'] правильно ли описано,
хотя наверно нет нужно менять $catagory['Field 3']); ведь в этом столбце делаем замену.
Как считаете что можно сделать? | |
|
|
|
|
|
|
|
для: pautina
(19.01.2012 в 06:23)
| | после обеих этих двух строчек вставьте
echo $newField_3."<br>";
и скопируйте сюда что выводится на экран | |
|
|
|
|
|
|
|
для: Lotanaen
(19.01.2012 в 12:06)
| | Давайте я Вам прямо из ячейки дам.
Тут по кодировке в браузере иероглифы выводятся.
[поправлено модератором]
Заменилась только строка <IMG height=23 src="/images/tools/Elliptical Marquee.jpg" width=27> | |
|
|
|
|
|
|
|
для: pautina
(19.01.2012 в 12:27)
| | и зачем мне эта простыня? я же попросил что вас сделать? | |
|
|
|