2016-04-26 15 views
1

В настоящее время я хочу передать ссылки на свой синтаксический анализатор RSS из моей базы данных postgreSQL.PHP: str_replace в PHP с удалением дополнительных символов в строке

До сих пор я был в состоянии преобразовать в массив одной строкой строка читается как:

{"(\"(http://www.delawareriverkeeper.org/rss.xml)\")","(\"(http://www.littoralsociety.org/index.php?format=feed&type=rss)\")","(\"(\"\"http://www.nj.gov/dep/newsrel/newsrel.rss \"\")\")"} 

только одной строки.

Мы хотим удалить дополнительные скобки, цитаты, обратные косые черты и скобки, чтобы они читались как «http://www.delawareriverkeeper.org/rss.xml», «http://www.littoralsociety.org/index.php?format=feed&type=rss» и так далее.

Затем мы планируем разделить это на другой массив, чтобы перейти в наш синтаксический анализатор.

Я думаю, что str_replace - это то, что я ищу, но у меня возникли проблемы с тем, чтобы выяснить, что использовать для удаления дополнительных кавычек.

+0

Я думаю, вам не нужно очистить и положить в массив, вы можете добиться того же в одном шаге с регулярное выражение. –

ответ

0

Следующее регулярное выражение соответствует любому URL в массив, так что нет никакой необходимости" расщепления, что в другой массив в перейти в наш парсер "

<?php 
$subject= '{"(\"(http://www.delawareriverkeeper.org/rss.xml)\")","(\"(http://www.littoralsociety.org/index.php?format=feed&type=rss)\")","(\"(\"\"http://www.nj.gov/dep/newsrel/newsrel.rss \"\")\")"}'; 
preg_match_all('/\b(?:(?:https?):\/\/|www\.)[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[-A-Z0-9+&@#\/%=~_|$]/ix', $subject, $result, PREG_PATTERN_ORDER); 
print_r($result[0]) 

ВЫВОД:

Array 
(
    [0] => http://www.delawareriverkeeper.org/rss.xml 
    [1] => http://www.littoralsociety.org/index.php?format=feed&type=rss 
    [2] => http://www.nj.gov/dep/newsrel/newsrel.rss 
) 

Ideone Demo

+0

Мы заметили ошибку с методом Джеффа. То, что произошло, это передать его в наш синтаксический анализатор XML, мы получили ошибку не-объекта. Я думаю, что все очистители, а затем мы повторили его, чтобы обрезать двойные кавычки, вызвало ошибку. Но ваше регулярное выражение отлично работало. Огромное спасибо. Просто поздно, пытаясь закончить это. –

0

это кажется тривиальным. ты пробовал?

<?php 

$raw = '{"(\"(http://www.delawareriverkeeper.org/rss.xml)\")","(\"(http://www.littoralsociety.org/index.php?format=feed&type=rss)\")","(\"(\"\"http://www.nj.gov/dep/newsrel/newsrel.rss \"\")\")"}'; 

$clean = str_replace('\"', '', $raw); 
$clean = str_replace(')', '', $clean); 
$clean = str_replace('(', '', $clean); 
$clean = str_replace('}', '', $clean); 
$clean = str_replace('{', '', $clean); 
$clean = str_replace(' ', '', $clean); 

echo $clean; 

"http://www.delawareriverkeeper.org/rss.xml", "http://www.littoralsociety.org/index.php?format=feed&type=rss",»http://www.nj.gov/dep/newsrel/newsrel.rss "

+0

Благодарим за помощь. Был в спешке, чтобы это сделать сегодня вечером, объясняет тусклое испытание и ошибку в вопросе. Я знаю, как это сделать в java, но php немного ускользнул от меня. –