#php #foreach
#php #foreach
Вопрос:
Как определить URL-адрес изображения, который, если ссылка содержит слова ads
ad
, затем передать insert в базу данных. Затем это должно быть вставлено в первые данные и передано вторым. Спасибо,
PHP-КОД
foreach($data['image'] as $item) {
$title = $item['title'];
$image = $item['image_url'];
mysql_query("SET NAMES utf8");
mysql_query("INSERT INTO article (title, image) VALUES ('".$title."', '".$image."')");
}
ДЕРЕВО JSON
{
"image": [
{
"title": "the big lake",
"image_url": "http://localhost/json/image/the_big_lake.jpg"
},
{
"title": "Nike Air",
"image_url": "http://localhost/json/image/12087689_ads.jpg"
}
]
}
Комментарии:
1. Ваш вопрос плохо сформулирован. Я понимаю, что вы хотите обнаружить строку «ad» в
image_url
ключе, но я не отслеживаю, что вы хотите сделать, когда такое условие выполнено.2. @Chris, могу ли я использовать
if(preg_match)
, чтобы сначала составить мнение?3. Я понимаю, что вам нужно условие (не «судить»), но я не уверен, что вы хотите делать, если условие истинно. Итак, если в имени файла есть строка «ad»… что делать? Вставить это? Не вставлять это?
Ответ №1:
Я предположу, что вы хотите вставить все изображения, у которых нет «ad» в URL-адресе изображения … если вам нужна ТОЛЬКО реклама, измените ===
в операторе if на !==
. Убедитесь, что оно содержит либо тройное равенство, либо восклицательное значение double equals.
Также обратите внимание, что это не очень надежный метод — что, если бы изображение было вызвано «my_dad_and_mom.jpg «. Он содержит «ad», но не является рекламой.
foreach($data['image'] as $item) {
if (strpos($item['image_url'], 'ad') === false) {
mysql_query("SET NAMES utf8"); // not sure why this is needed....
mysql_query("INSERT INTO article (title, image) VALUES ('".$item['title']."', '".$item['image_url']."')");
}
}
РЕДАКТИРОВАТЬ: Это вроде как быстро и грязно…
$forbidden_words = array(
'ads',
'ad',
'sex',
'xxx'
);
function str_in_array($str, $array) {
foreach ($array as $token) {
if (stristr($str, $token) !== FALSE)
return true;
}
return false;
}
foreach($data['image'] as $item) {
if (str_in_array($item['image_url'], $forbidden_words) === false) {
mysql_query("SET NAMES utf8"); // not sure why this is needed....
mysql_query("INSERT INTO article (title, image) VALUES ('".$item['title']."', '".$item['image_url']."')");
}
}
Комментарии:
1. Добавлен массив запрещенных слов и функция для проверки
Ответ №2:
нравится это?
foreach($data['image'] as $item) {
$title = $item['title'];
$image = $item['image_url'];
if(preg_match('/ad/',$image){
mysql_query("SET NAMES utf8");
mysql_query("INSERT INTO article (title, image) VALUES ('".$title."', '".$image."')");
}
}
Комментарии:
1. это должно быть
if(!preg_match('/ad/',$image)){
2. «судите по URL изображения, что если ссылка содержит слова ads ad, то передайте insert в базу данных» звучит так, как будто он хотел по-другому, хотя это имеет гораздо больше смысла;)
3. Я знаю, что preg_match допускает совпадение только с одним словом. но Крис решает это с помощью функции.
4. вы также изначально просили что-то, что исключало бы ‘ad’ и ‘ads’ … в любом случае было бы найдено слово ‘ad’… но у Криса есть более надежный ответ