我搜索了StackOverflow上的每一个str_replace,preg_replace,substr,并且无法解决这个问题。
我的数据中的字符串是这样的:" 010758-01-700"或" 860862-L-714"。这些只是一些例子。
这些字符串是
实例1:
010758-01-700 /ImageServices/image.ashx?itemid=010758&config=01&format=l&imagenumber=1
如果仔细查看网址及其上方的字符串,我需要将其拆分为" 01075& config = 01"并放弃" -700"从字符串返回一个值,我可以插入到URL
实例2:
860862-L-714 /ImageServices/image.ashx?itemid=870078&color=001&format=l&imagenumber=1
我需要将其拆分为" 860862&& color = 714"并删除" -XXS - , - XS - , - S - , - M - , - L - , - XL - , - XXL - "的所有实例。为字符串返回一个值,我可以插入到URL
在整个数据中有一些看起来像这样的字符串,860862-L-714,860862-M-999,860862-XS-744。这些是具有相同名称但不同的产品的变体
我已尝试过str_replace("-", "&config=", {ItemNo[1]})
,但它返回010758& config = 01& config = 700
我需要将此全部包含在一个可以调用URL的函数中
myFunction({ItemNo[1]})
然后我可以设置URL,因为/ImageServices/image.ashx?itemid =
myFunction({ItemNo[1]})&format=l&imagenumber=1
如果我的逻辑是正确的,它应该有效。我使用WP All Import来导入XML数据。
如何根据上述两个实例创建一个操作字符串的函数,并输出我试图实现的结果?
好的 - 根据回复,我已经解决了第一个实例以获取正确的网址显示 - $ content是ItemNo
<?php
function ItemNoPart1 ( $content ) {
$content1 = explode("-", $content);
return $content1[0];
}
function ItemNoPart2 ( $content ) {
$content2 = explode("-", $content);
return $content2[1];
}
?>
/ImageServices/image.ashx?itemid=[ItemNoPart1({ItemNo[1]})]&config=[ItemNoPart2({ItemNo[1]})]&format=l&imagenumber=1
现在我只需要弄清楚如何进行第2部分并将其全部合并为1个函数。
答案 0 :(得分:0)
请勿使用str_replace
,而是使用explode
:
$str = '010758-01-700';
$chunks = explode( '-', $str );
通过这种方式,生成的$chunks
是这样的数组:
[0] => 010758
[1] => 01
[2] => 700
所以,现在你可以用这种方式格式化所需的URL:
$url = "/ImageServices/image.ashx?itemid={$chunks[0]}&config={$chunks[1]}&format=l&imagenumber=1"
您想要的功能是:
function myFunction( $itemID )
{
$chunks = explode( '-', $itemID );
return "/ImageServices/image.ashx?itemid={$chunks[0]}&config={$chunks[1]}";
}
...但是,你真的想要这个东西的功能吗?
答案 1 :(得分:0)
这是一些伪造的代码,可能会引导您朝着正确的方向前进。我们的想法是构建一个数组,其中包含来自字符串的可能数据的全部。
我已经使用了/ImageServices/image.ashx?
的给定常量来分割,因为我们知道了我们的端点的URL。
// explode our string into multiple parts
$parts = explode('/ImageServices/image.ashx?', $str);
// we know that the string we need to parse as at the index of 1
parse_str($parts[1], $parsed);
//$wanted will contain all of the data we can possibly need.
$wanted = array($parts[0], $parsed);
这将产生一个如下所示的数组:
array (
0 => '860862-L-714 ',
1 =>
array (
'itemid' => '870078',
'color' => '001',
'format' => 'l',
'imagenumber' => '1',
),
)
现在您可以执行条件,例如当您需要查找color
并创建特定的URL结构时:
if(array_key_exists('color', $wanted[1]){
//create our custom sting structure here.
}
希望这有帮助。