търсене в стринг

C++ JAVA
r_a_s
Нов
Нов
Posts: 197
Joined: Fri Apr 02, 2010 12:19 pm

търсене в стринг

Post by r_a_s » Thu Sep 12, 2013 12:02 pm

Здравейте, имам три променливи:

$text1 = "abcdfghmn";
$text2 = "abc";
$broi = strlen($text2);

Искам да търси $text2 в $text1 от началото, тоест от първия символ и да е с дължина $broi. Брой променливата съм я сложил, защото изрично ми трябва да търси само с определен брой символи в случая са 3.

User avatar
rainbowdio
Нов
Нов
Posts: 61
Joined: Mon Apr 19, 2010 5:41 pm
Answers: 13

Post by rainbowdio » Thu Sep 12, 2013 12:35 pm

if(strpos($text1, $text2) !== false) {
echo 1;
}else {
echo 0;
}

r_a_s
Нов
Нов
Posts: 197
Joined: Fri Apr 02, 2010 12:19 pm

Post by r_a_s » Thu Sep 12, 2013 1:04 pm

Този вариант съм го пробвал и не ми върши работа! Значи при мен с цикъл ми се вадят различни текстове.

Пример:

текст1 - abc

текст2 - abcd

текст3 - abcvdf

Целта ми е от тези текстове, които ми се вадят с цикъл да ми изведе само първия текст, който е abc. Иначе с този код който ти ми даде ще ми изведе и трите текста, защото и трите съдържат abc :)

fbian
Турист
Турист
Posts: 204
Joined: Sat May 26, 2012 3:55 pm
Answers: 18

Post by fbian » Thu Sep 12, 2013 1:05 pm

r_a_s wrote:Този вариант съм го пробвал и не ми върши работа! Значи при мен с цикъл ми се вадят различни текстове.

Пример:

текст1 - abc

текст2 - abcd

текст3 - abcvdf

Целта ми е от тези текстове, които ми се вадят с цикъл да ми изведе само първия текст, който е abc. Иначе с този код който ти ми даде ще ми изведе и трите текста, защото и трите съдържат abc :)
Ами сложи един брояч от 0.И ако стане 1-ца break-ни цикъла и си вземаш резултата.А ако не стане значи няма намерено съвпадение.

r_a_s
Нов
Нов
Posts: 197
Joined: Fri Apr 02, 2010 12:19 pm

Post by r_a_s » Thu Sep 12, 2013 1:18 pm

fbian, ако може да ми дадеш пример ще съм ти благодарен :)

User avatar
djman
Гуру
Гуру
Posts: 2808
Joined: Sat Sep 12, 2009 8:07 am
Answers: 108

Post by djman » Thu Sep 12, 2013 1:35 pm

http://codepad.org/YQdeWJ2Q

заповядай :) търси $text2 от началото на $text1 със същия брой символи. т.е. ако $text1 = "babcd" - няма да има съвпадение. поне така си обяснил в първия пост.

User avatar
Revelation
Web-tourist
Web-tourist
Posts: 892
Joined: Sun Mar 24, 2013 1:23 pm
Answers: 63

Post by Revelation » Thu Sep 12, 2013 9:21 pm

strpos е най-правилния начин и както каза @fbian прекъсвай цикъла като намери съвпадение.

[php]
$needle = 'abc';
$neededValue = null;
foreach($someArray as $key => $value) {
if ( strpos($value, $needle) ) {
$neededValue = $value;
break;
}
}
[/php]

прост пример.

User avatar
djman
Гуру
Гуру
Posts: 2808
Joined: Sat Sep 12, 2009 8:07 am
Answers: 108

Post by djman » Thu Sep 12, 2013 10:00 pm

може би strpos($value, $needle) === 0 ?

joTunkiq
Потребител
Потребител
Posts: 829
Joined: Tue Dec 25, 2012 10:03 am
Answers: 142
Contact:

Post by joTunkiq » Fri Sep 13, 2013 5:33 am

защо не пробваш с preg_match .. нещо такова ?

Code: Select all

if( preg_match("/abc/",$text1) )
{
  echo $text1;
}
else if( preg_match("/abc/",$text2) )
{
  echo $text2;
}
else if( preg_match("/abc/",$text3) )
{
  echo $text2;
}
else
      {
         echo $text1;
          echo "<br />";
         echo $text2;
           echo "<br />";
          echo $text2;
        &#125;
:idea: :?:

User avatar
deam0n
Web-tourist
Web-tourist
Posts: 3032
Joined: Sat Oct 01, 2005 4:33 pm
Answers: 204
Location: Шопландия
Contact:

Post by deam0n » Fri Sep 13, 2013 9:28 am

r_a_s wrote:Този вариант съм го пробвал и не ми върши работа! Значи при мен с цикъл ми се вадят различни текстове.

Пример:

текст1 - abc

текст2 - abcd

текст3 - abcvdf

Целта ми е от тези текстове, които ми се вадят с цикъл да ми изведе само първия текст, който е abc. Иначе с този код който ти ми даде ще ми изведе и трите текста, защото и трите съдържат abc :)
Така като гледам ти искаш if ($text == 'abc') :D

Post Reply