PHP : str_replace in PHP 删除字符串中的多余符号
PHP : str_replace in PHP with removing extra symbols in string
目前我想将链接从我的 postgreSQL 数据库传递到我的 RSS 提要解析器。
到目前为止,我能够将字符串转换为单个字符串的数组,字符串如下所示:
{"(\"(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 是我要找的东西,但我在实际弄清楚如何删除多余的引号时遇到了麻烦。
这看起来微不足道。你试过了吗?
<?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"
以下正则表达式将任何 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
)
目前我想将链接从我的 postgreSQL 数据库传递到我的 RSS 提要解析器。
到目前为止,我能够将字符串转换为单个字符串的数组,字符串如下所示:
{"(\"(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 是我要找的东西,但我在实际弄清楚如何删除多余的引号时遇到了麻烦。
这看起来微不足道。你试过了吗?
<?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"
以下正则表达式将任何 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
)