|
|
|
| Здравствуйте Уважаемое сообщество.
<?php
$str = '<P>И вот мой<A href="http://www.psdvault.com/img/2011/08/golden-circle-flatten.jpg"> финальный результат</A>:</P>
<P align=center><IMG height=262 src="/lessons/les1689/01.jpg" width=450></P>
<P>Автор: PSD Vault<BR>Переводчик: Макс Енин<BR><A href="http://www.psdvault.com/abstracts/create-an-abstract-golden-circle-with-smoke-brushset-in-photoshop/">Ссылка на источник</A></P>
<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>
<DIV style="TEXT-ALIGN: center"><IMG height=48 alt="" src="orphus/Oleg_Fadjarov_btn4.gif" width=257></DIV><BR>
<DIV class=Created id=favorite><IMG src="images/ajax-loader.gif"><SPAN>Добавить в закладки (личный кабинет)</SPAN> </DIV>
<DIV class=Created id=sharedButtons style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; PADDING-BOTTOM: 5px; PADDING-TOP: 5px">
<SCRIPT src="//yandex.st/share/share.js" type=text/javascript charset=utf-8></SCRIPT>
<DIV class=yashare-auto-init data-yashareType="button" data-yashareQuickServices="vkontakte,moimir,odnoklassniki,facebook,yaru,twitter,friendfeed,lj"></DIV>';
/* preg_match_all('|<h1.*?>(.*)</h1>|sei', $str, $matches);
регулярное выражение выводит все между символами h1 */
preg_match_all('<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>', $str, $matches); // регулярное выражение для вытаскивания рисунков, выводит все теги <img src="" ... />
echo '<pre>';
print_r($matches[0]);
?>
|
Мне нужно вырезать из этой строки всё что идёт после кода
<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>
|
Как правильно прописать это условие? | |
|
|
|
|
|
|
|
для: pautina
(02.01.2012 в 13:16)
| | Просто найдите вхождение этой строки при помощи strpos(), у вас в руках будет позиция начала этого абзаца, которую можно передать в качестве второго параметра substr(), тогда у вас в руках останется подстрока, до этой позиции. | |
|
|
|
|
|
|
|
для: cheops
(02.01.2012 в 13:28)
| | Использовал этот код
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>
';
$pos = strpos($str, $findme); // определяем позицию $findme в переменной $str
$newstr = substr($str, 0, $pos+129); // создаём новую строку из str от 0 сивола до символа $pos+129
|
Спасибо всё работает. | |
|
|
|
|
|
|
|
для: pautina
(02.01.2012 в 16:23)
| | Чтобы этот код работал для удаления лишнего участка кода в таблице
использовал код (БД bd_photoshop-portal, таблица material_content_into3, поле где содержится контент Field 3)
<?php
$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))
{
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>
';
$pos = strpos('{Field 3}', $findme); // определяем позицию $findme в содержимом поля Field 3
//$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
$newField_3 = substr('{Field 3}', 0, $pos+129);
// Запрос для обновления
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";
if(!mysql_query($query))
{
exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
}
echo 'Запрос выполнен успешно';
}
}
?>
|
Здесь вроде бы не правильный синтаксис для записи Field 3 в строках
$pos = strpos('{Field 3}', $findme);
$newField_3 = substr('{Field 3}', 0, $pos+129);
|
Ни проверите? | |
|
|
|
|
 88.3 Кб |
|
|
для: pautina
(03.01.2012 в 12:52)
| | Взгляните на этот код
<?php
$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))
{
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>';
$pos = strpos($catagory['Field 3'], $findme); // определяем позицию $findme в содержимом поля Field 3
//$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
$newField_3 = substr($catagory['Field 3'], 0, $pos+129);
// Запрос для обновления
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";
if(!mysql_query($query))
{
exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
}
echo 'Запрос выполнен успешно';
}
}
?>
|
Почему здесь строка урезается не с позиции 780 например, это то место где в коде присутствует текст '<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>' а с 0 символа строки,
может дело как то в типе данных Field 3 это longtext.
Файл который создает таблицу material_content_into3 через mysql запрос прикрепил. | |
|
|
|
|
|
|
|
для: pautina
(03.01.2012 в 15:19)
| | Куда же Вы пропали?
Так хорошо мы с вами обсуждали текущие вопросы, столько вроде тем затронули и закрепили, я участки кода начал дополнять, не посмотрите предидущее сообщение? | |
|
|
|
|
|
|
|
для: pautina
(03.01.2012 в 17:31)
| | Мне иногда еще и работу делать нужно по студии :) Постараюсь чуть попозже ответить. | |
|
|
|
|
 88.3 Кб |
|
|
для: cheops
(03.01.2012 в 18:10)
| | Взгляните на этот код
<?php
$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))
{
$findme='<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>';
$pos = strpos($catagory['Field 3'], $findme); // определяем позицию $findme в содержимом поля Field 3
//$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
$newField_3 = substr($catagory['Field 3'], 0, $pos+129);
// Запрос для обновления
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";
if(!mysql_query($query))
{
exit("Ошибка выполнения запроса - ".mysql_error()."<br />".$query);
}
echo 'Запрос выполнен успешно';
}
}
?>
|
Почему здесь строка урезается не с позиции 780 например, это то место где в коде присутствует текст '<P>Данный урок подготовлен для Вас командой сайта <A href="http://www.photoshop-master.ru">http://www.photoshop-master.ru</A></P>' а с 0 символа строки,
может дело как то в типе данных Field 3 это longtext.
Файл который создает таблицу material_content_into3 через mysql запрос прикрепил. | |
|
|
|
|
|
|
|
для: pautina
(04.01.2012 в 09:32)
| | Зря по такой сложной строке ищите... нельзя упростить искомое выражение? в HTML-коде адрес http://www.photoshop-master.ru где-нибудь еще встречается? | |
|
|
|
|
|
|
|
для: cheops
(04.01.2012 в 12:12)
| | По более простому выражению
$findme='<P>Данный урок подготовлен для Вас командой сайта';
|
оно уникально для содержимого каждой ячейки и встречается только 1 раз строка всё равно урезается с 0 символа.
$findme='<P>Данный урок подготовлен для Вас командой сайта';
$pos = strpos($catagory['Field 3'], $findme); // определяем позицию $findme в содержимом поля Field 3
//$newstr = substr($str, 0, $pos+129); // создаём новую строку из Field 3 от 0 сивола до символа $pos+129
$newField_3 = substr($catagory['Field 3'], 0, $pos+129);
// Запрос для обновления
$query = "UPDATE material_content_into3
SET `Field 3` = '{$newField_3}'
WHERE ID = {$catagory['ID']}";
|
Нужно вывести на печать, чему равна $pos, и понять почему она =0, а не 780 например. | |
|
|
|
|
|
|
|
для: pautina
(04.01.2012 в 12:55)
| | Выведите сбойный $catagory['Field 3'] в файл (не в браузер, а именно в файл) и прикрепите сюда, там может быть что угодно, нужно ситуацию воспроизводить. | |
|
|
|
|
 88.3 Кб |
|
|
для: cheops
(04.01.2012 в 13:07)
| | Файл прикрепил. Посмотрите. Все из этого исходника берётся.
Данный файл формирует таблицу из 3 строк, сделайте sql запрос в phpMyAdmin получите исходную таблицу из поля Field 3 которой нужно удалить лишний участок кода. | |
|
|
|
|
|
|
|
для: pautina
(04.01.2012 в 13:34)
| | У меня ваш скрипт сработал как надо. У вас вообще не обновляется дамп, как выглядит сбой? | |
|
|
|
|
|
|
|
для: cheops
(04.01.2012 в 14:37)
| | Содержимое ячейки обновляется, контент урезается, но не так как нужно.
Сбой выгледит так урезается строка с 0 символа, а не с символа $pos+129, там по исходному коду видно что контента должно быть больше.
Почему контент так урезается не понятно? | |
|
|
|
|
|
|
|
для: pautina
(04.01.2012 в 14:56)
| | У вас скрипт в какой кодировке работает и в какой кодировке данные в базе данных? | |
|
|
|
|
|
|
|
для: cheops
(04.01.2012 в 15:19)
| | Ну наконец то. )
А я то думаю в чем же тут дело?,
почему строка не урезается как надо, и по коду всё правильно, и скриптом регулярного выражения я проверял, строка обрезалась.
В кодировке оказывается дело.
Спасибо Вам огромное. | |
|
|
|