[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена строк по рег выражению в цикле, и их вывод
livephp
Проблема при выводе $result, нужно чтоб каждый элемент $array, был внутри $req :
for($i=0;$i<count($array);$i++){
$req='~(<td\\s+id="result"\\s+width="51"\\s+align="center"\\s*>)((?:[^<]++|<(?!/td>))*)(</td>)~i';
$result = preg_replace($req,'$1'.$array[$i].'$3',$mystr);
echo $result ;}

А в итоге каждый элемент $array , выводит столько сколько общее количество всех элементов $array.
Пробовал и в цикле foreach, и вывести бес циклов, но так как надо не получается (
hydrogen
Я не понял нифига! blink.gif dry.gif

Цитата
нужно чтоб каждый элемент $array, был внутри $req

Чтобы каждый элемент массива запихать в строку нужен либо цикл с конкатенацией, либо функция implode().

Цитата
А в итоге каждый элемент $array , выводит столько сколько общее количество всех элементов $array.

Общее сколько выводит столько элементов количество $array каждый?..

Кстати, цикл тут совершенно лишний. $subject вполне себе может быть массивом. Смотрите здесь.

Приведенный вами код должен осуществлять замену в каждом элементе массива в соответствии с паттерном и выводить их значения. Если на выходе что-то не то, проверяйте паттерн.

_____________
hydrogen
Цитата
А в итоге каждый элемент $array , выводит столько сколько общее количество всех элементов $array.

Меня, кажется, осенило... Вы имеете в виду, что ни один элемент массива так и не был затронут функцией замены? Т.е. ни разу паттерн не сработал?

'((?:[^<]++|<(?!/td>))*)'
Вот это место вызывает сильные сомнения. Это утверждения в альтернативных наборах?.. Не уверен, как себя поведет такая конструкция в целом, но положительное утверждение о последующем тексте задается ?=, а не ?:. И повторение вида '++' тоже смущает.

Вообще в чем задача состоит? "Выдрать"
<td>содержимое тега</td>
?

_____________
livephp
Объясню чуть по другому, есть массив $array:
Array
(
[
0] => <tr><td id="sep"></td></tr>
[
1] => <tr><td id="title">texttext</td></tr>
[
2] => <tr><td id="match" >texttext</td><td id="data">texttext</td></tr>
[
3] => <tr id="lsone"><td id="time">texttext</td><td id="hteam">texttext</td><td id="result">texttext</td><td id="aTeam">texttext</td></tr>
[
4] => <tr id="lstwo"><td id="time">texttext</td><td id="hteam">texttext</td><td id="result">texttext</td><td id="aTeam">texttext</td></tr>
[
5] => <tr id="lsone"><td id="time">texttext</td><td id="hteam">texttext</td><td id="result">texttext</td><td id="aTeam">texttext</td></tr>
[
6] => <tr><td id="sep"></td></tr>
)
)

все что между тегом
<td id="result">texttext</td>

Нужно заменить на значения массива $myarray :
Array
(

[
0] => <a href="blabla.php">texttext</a>
[
1] => <a href="blabla.php">texttext</a>
[
2] => <a href="blabla.php">texttext</a>
)

Должно получится так :
Array
(
[
0] => <tr><td id="sep"></td></tr>
[
1] => <tr><td id="title">texttext</td></tr>
[
2] => <tr><td id="match" >texttext</td><td id="data">texttext</td></tr>
[
3] => <tr id="lsone"><td id="time">texttext</td><td id="hteam">texttext</td><td id="result"><a href="blabla.php">texttext</a></td><td id="aTeam">texttext</td></tr>
[
4] => <tr id="lstwo"><td id="time">texttext</td><td id="hteam">texttext</td><td id="result"><a href="blabla.php">texttext</a></td><td id="aTeam">texttext</td></tr>
[
5] => <tr id="lsone"><td id="time">texttext</td><td id="hteam">texttext</td><td id="result"><a href="blabla.php">texttext</a></td><td id="aTeam">texttext</td></tr>
[
6] => <tr><td id="sep"></td></tr>
)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.