Php 在字符串的最后一个位置查找字符串,不区分大小写,如果找不到,则追加预定义字符串
我正在开发facebook开放图形api,用户可以在其时间线中发布视频。 现在我们播放视频的页面称为视频播放页面,我们动态生成元属性。过程如下Php 在字符串的最后一个位置查找字符串,不区分大小写,如果找不到,则追加预定义字符串,php,regex,Php,Regex,我正在开发facebook开放图形api,用户可以在其时间线中发布视频。 现在我们播放视频的页面称为视频播放页面,我们动态生成元属性。过程如下 制作团队在数据库中添加视频,每个视频都有一个名为“title”的属性 此外,还有一个单独的db表,我们称之为meta_seo,其中为每个视频seo添加了相关信息。例如标题、描述等 现在,在为页面生成元信息时,我们首先检查meta_seo表上是否有一些信息,如果找到,我们将生成元标记,否则将从视频对象中检索它们,该对象也将包含一些信息,因此FB og:
- 制作团队在数据库中添加视频,每个视频都有一个名为“title”的属性
- 此外,还有一个单独的db表,我们称之为meta_seo,其中为每个视频seo添加了相关信息。例如标题、描述等
- 视频标题1
- 视频标题2
- 视频标题-mysite.com
- 视频标题| MySite.com
$haystack1 = "Title1- Online class - mysite.com";
$haystack2 = "Title2 - Online Class";
$needle = 'mysite.com';
if(strripos($haystack1,$needle) === false){
echo $haystack1.' | '.'MySite.com';
}else{
echo $haystack1 ;
}
if(strripos($haystack2,$needle) === false){
echo $haystack2.' | '.'MySite.com';
}else{
echo $haystack2 ;
}
上面的代码运行得很好。但我的问题是,有没有更好的方法来实现这一点,或者我可以按照我上面指出的方式来实现
我不会把它贴到Facebook上,因为它与Facebook无关,也不会在FB或graph api/open graph上发布任何问题。您可以使用regex实现更大的灵活性:
if (preg_match('/\s*(-|\|)?\s*'.str_replace('.', '\.', $needle).'\s*$/i', $haystack1)) {
// do something if exists
echo $haystack1;
} else {
echo $haystack1.' | '.'MySite.com';
}
所以脚本将输出:
video title1 => video title1 | MySite.com
video title2 => video title2 | MySite.com
video title - mysite.com => video title - mysite.com
video title | MySite.com => video title | MySite.com
是你需要的吗?或者您也想通过|mysite.com重播-mysite.com
我建议在store haystacks中使用数组,然后在foreach中使用上面的答案。不确定这是否可行,我的目标是检查mysite.com是否存在于字符串末尾。如果不存在,则在原始stringecho$haystack1的末尾添加“| mysite.com”。|“'mysite.com”;将返回array | MySite.com,其中我的字符串是一个简单字符串,但您的匹配有效。但“替换”并没有,所以我会等待更好的答案来接受。我的答案有误,请检查更新。好的,现在我明白了:)