Add CoolSMS PHP SDK, and update Composer dependencies

This commit is contained in:
Kijin Sung 2016-11-03 20:19:28 +09:00
parent 40c43e8fa0
commit c719fc0500
242 changed files with 3487 additions and 28983 deletions

View file

@ -19,6 +19,7 @@
"ext-openssl": "*",
"ext-pcre": "*",
"ext-xml": "*",
"coolsms/php-sdk": "2.0.*",
"defuse/php-encryption": "1.2.1",
"ezyang/htmlpurifier": "4.7.*",
"hautelook/phpass": "0.3.*",

126
composer.lock generated
View file

@ -4,9 +4,63 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "64d8278cd705dec01a94208e378716f8",
"content-hash": "fa544ace96d8d80c11db9dafb2c49753",
"hash": "66af49066c9b92d6708080f3d32860f4",
"content-hash": "51acda30c4d45b4c956743d4bd1ac16e",
"packages": [
{
"name": "coolsms/php-sdk",
"version": "v2.0",
"source": {
"type": "git",
"url": "https://github.com/coolsms/php-sdk.git",
"reference": "ce00fea155169dcf2a3759abd41ad20ff80ca0b1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/coolsms/php-sdk/zipball/ce00fea155169dcf2a3759abd41ad20ff80ca0b1",
"reference": "ce00fea155169dcf2a3759abd41ad20ff80ca0b1",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Nurigo\\": "app/Nurigo"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "nurigo",
"email": "contact@nurigo.net",
"homepage": "http://coolsms.co.kr",
"role": "Developer"
}
],
"description": "Send message using PHP and RestAPI[TEST]",
"homepage": "http://coolsms.co.kr",
"keywords": [
"TextMessage",
"cellphone",
"cool",
"coolsms",
"global",
"lms",
"message",
"messages",
"mms",
"mobile",
"nurigo",
"phone",
"sms"
],
"time": "2016-09-02 03:28:39"
},
{
"name": "defuse/php-encryption",
"version": "v1.2.1",
@ -272,16 +326,16 @@
},
{
"name": "leafo/scssphp",
"version": "v0.6.3",
"version": "v0.6.6",
"source": {
"type": "git",
"url": "https://github.com/leafo/scssphp.git",
"reference": "a27edad3d16635a222d7204706572e24c338aa17"
"reference": "6fdfe19d2b13a3f12ba0792227f0718809ce4e4d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/a27edad3d16635a222d7204706572e24c338aa17",
"reference": "a27edad3d16635a222d7204706572e24c338aa17",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/6fdfe19d2b13a3f12ba0792227f0718809ce4e4d",
"reference": "6fdfe19d2b13a3f12ba0792227f0718809ce4e4d",
"shasum": ""
},
"require": {
@ -321,20 +375,20 @@
"scss",
"stylesheet"
],
"time": "2016-01-15 02:50:06"
"time": "2016-09-11 01:34:11"
},
{
"name": "league/html-to-markdown",
"version": "4.2.0",
"version": "4.2.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
"reference": "9a5becc8c6b520920fb846afefcfd7faf4c31712"
"reference": "8dfe3b1e6d459b320bec1a4b5499cd9d62796ac0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/9a5becc8c6b520920fb846afefcfd7faf4c31712",
"reference": "9a5becc8c6b520920fb846afefcfd7faf4c31712",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/8dfe3b1e6d459b320bec1a4b5499cd9d62796ac0",
"reference": "8dfe3b1e6d459b320bec1a4b5499cd9d62796ac0",
"shasum": ""
},
"require": {
@ -385,20 +439,20 @@
"html",
"markdown"
],
"time": "2016-02-01 16:49:02"
"time": "2016-09-27 12:38:24"
},
{
"name": "matthiasmullie/minify",
"version": "1.3.34",
"version": "1.3.39",
"source": {
"type": "git",
"url": "https://github.com/matthiasmullie/minify.git",
"reference": "272e46113404f66ced256659552a0cc074a7810f"
"reference": "1a6cb6b457690034bde461593edb510949bdd6e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/272e46113404f66ced256659552a0cc074a7810f",
"reference": "272e46113404f66ced256659552a0cc074a7810f",
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/1a6cb6b457690034bde461593edb510949bdd6e7",
"reference": "1a6cb6b457690034bde461593edb510949bdd6e7",
"shasum": ""
},
"require": {
@ -441,7 +495,7 @@
"minifier",
"minify"
],
"time": "2016-03-01 08:00:27"
"time": "2016-10-27 22:32:49"
},
{
"name": "matthiasmullie/path-converter",
@ -553,7 +607,7 @@
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-smartypants/zipball/c0465c6d4c5ab853c2fa45df6c10bce7e35cc137",
"url": "https://api.github.com/repos/michelf/php-smartypants/zipball/171a3a2552f33340bf3636bdb4b05eb4e406fbda",
"reference": "c0465c6d4c5ab853c2fa45df6c10bce7e35cc137",
"shasum": ""
},
@ -649,16 +703,16 @@
},
{
"name": "sunra/php-simple-html-dom-parser",
"version": "v1.5.0",
"version": "v1.5.1",
"source": {
"type": "git",
"url": "https://github.com/sunra/php-simple-html-dom-parser.git",
"reference": "a0b80ace086c7e09085669205e1b3c2c9c7a453c"
"reference": "f910346ce47513a49ed5b8de197cde26c3f0b193"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sunra/php-simple-html-dom-parser/zipball/a0b80ace086c7e09085669205e1b3c2c9c7a453c",
"reference": "a0b80ace086c7e09085669205e1b3c2c9c7a453c",
"url": "https://api.github.com/repos/sunra/php-simple-html-dom-parser/zipball/f910346ce47513a49ed5b8de197cde26c3f0b193",
"reference": "f910346ce47513a49ed5b8de197cde26c3f0b193",
"shasum": ""
},
"require": {
@ -676,9 +730,9 @@
],
"authors": [
{
"name": "sunra",
"name": "Sunra",
"email": "sunra@yandex.ru",
"homepage": "http://github.com/sunra"
"homepage": "https://github.com/sunra"
}
],
"description": "Composer adaptation of: A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way! Require PHP 5+. Supports invalid HTML. Find tags on an HTML page with selectors just like jQuery. Extract contents from HTML in a single line.",
@ -688,27 +742,27 @@
"html",
"parser"
],
"time": "2013-05-04 14:32:03"
"time": "2016-05-20 11:21:15"
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.2",
"version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "d8db871a54619458a805229a057ea2af33c753e8"
"reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/d8db871a54619458a805229a057ea2af33c753e8",
"reference": "d8db871a54619458a805229a057ea2af33c753e8",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1,<0.9.4"
"mockery/mockery": "~0.9.1"
},
"type": "library",
"extra": {
@ -741,20 +795,20 @@
"mail",
"mailer"
],
"time": "2016-05-01 08:45:47"
"time": "2016-07-08 11:51:25"
},
{
"name": "true/punycode",
"version": "v2.0.2",
"version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/true/php-punycode.git",
"reference": "74fa01d4de396c40e239794123b3874cb594a30c"
"reference": "74033cbe9fdd3eba597f8af501947a125b3b8087"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/true/php-punycode/zipball/74fa01d4de396c40e239794123b3874cb594a30c",
"reference": "74fa01d4de396c40e239794123b3874cb594a30c",
"url": "https://api.github.com/repos/true/php-punycode/zipball/74033cbe9fdd3eba597f8af501947a125b3b8087",
"reference": "74033cbe9fdd3eba597f8af501947a125b3b8087",
"shasum": ""
},
"require": {
@ -787,7 +841,7 @@
"idna",
"punycode"
],
"time": "2016-01-07 17:12:58"
"time": "2016-08-09 14:50:44"
}
],
"packages-dev": null,

View file

@ -1,19 +1,433 @@
Copyright (c) 2016 Nils Adermann, Jordi Boggiano
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Composer
Upstream-Contact: Jordi Boggiano <j.boggiano@seld.be>
Source: https://github.com/composer/composer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
Files: *
Copyright: 2016, Nils Adermann <naderman@naderman.de>
2016, Jordi Boggiano <j.boggiano@seld.be>
License: Expat
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Files: res/cacert.pem
Copyright: 2015, Mozilla Foundation
License: MPL-2.0
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Files: src/Composer/Util/RemoteFilesystem.php
src/Composer/Util/TlsHelper.php
Copyright: 2016, Nils Adermann <naderman@naderman.de>
2016, Jordi Boggiano <j.boggiano@seld.be>
2013, Evan Coury <me@evancoury.com>
License: Expat and BSD-2-Clause
License: BSD-2-Clause
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
.
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
License: MPL-2.0
1. Definitions
--------------
.
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
.
1.3. "Contribution"
means Covered Software of a particular Contributor.
.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
.
1.5. "Incompatible With Secondary Licenses"
means
.
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
.
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
.
1.8. "License"
means this document.
.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
.
1.10. "Modifications"
means any of the following:
.
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
.
(b) any new file in Source Code Form that contains any Covered
Software.
.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
.
2. License Grants and Conditions
--------------------------------
.
2.1. Grants
.
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
.
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
.
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
.
2.2. Effective Date
.
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
.
2.3. Limitations on Grant Scope
.
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
.
(a) for any code that a Contributor has removed from Covered Software;
or
.
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
.
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
.
2.4. Subsequent Licenses
.
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
.
2.5. Representation
.
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
.
2.6. Fair Use
.
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
.
2.7. Conditions
.
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
.
3. Responsibilities
-------------------
.
3.1. Distribution of Source Form
.
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
.
3.2. Distribution of Executable Form
.
If You distribute Covered Software in Executable Form then:
.
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
.
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
.
3.3. Distribution of a Larger Work
.
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
.
3.4. Notices
.
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
.
3.5. Application of Additional Terms
.
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
.
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
.
5. Termination
--------------
.
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
.
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
.
8. Litigation
-------------
.
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
.
9. Miscellaneous
----------------
.
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
.
10. Versions of the License
---------------------------
.
10.1. New Versions
.
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
.
10.2. Effect of New Versions
.
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
.
10.3. Modified Versions
.
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
.
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
.
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
.
Exhibit A - Source Code Form License Notice
-------------------------------------------
.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
.
You may add additional accurate notices of copyright ownership.
.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
.
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View file

@ -317,6 +317,15 @@ return array(
'Michelf\\Markdown' => $vendorDir . '/michelf/php-markdown/Michelf/Markdown.php',
'Michelf\\MarkdownExtra' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownExtra.php',
'Michelf\\MarkdownInterface' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownInterface.php',
'Nurigo\\Api\\GroupMessage' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Api/GroupMessage.php',
'Nurigo\\Api\\Image' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Api/Image.php',
'Nurigo\\Api\\Message' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Api/Message.php',
'Nurigo\\Api\\SenderID' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Api/SenderID.php',
'Nurigo\\Coolsms' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Coolsms.php',
'Nurigo\\Exceptions\\CoolsmsException' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Exceptions/CoolsmsException.php',
'Nurigo\\Exceptions\\CoolsmsSDKException' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Exceptions/CoolsmsSDKException.php',
'Nurigo\\Exceptions\\CoolsmsServerException' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Exceptions/CoolsmsServerException.php',
'Nurigo\\Exceptions\\CoolsmsSystemException' => $vendorDir . '/coolsms/php-sdk/app/Nurigo/Exceptions/CoolsmsSystemException.php',
'Requests' => $vendorDir . '/rmccue/requests/library/Requests.php',
'Requests_Auth' => $vendorDir . '/rmccue/requests/library/Requests/Auth.php',
'Requests_Auth_Basic' => $vendorDir . '/rmccue/requests/library/Requests/Auth/Basic.php',
@ -376,6 +385,9 @@ return array(
'Swift_Events_ResponseReceivedListener' => $vendorDir . '/jmhobbs/swiftmailer-transport-aws-ses/classes/Swift/Events/ResponseReceivedListener.php',
'Swift_Response_AWSResponse' => $vendorDir . '/jmhobbs/swiftmailer-transport-aws-ses/classes/Swift/Response/AWSResponse.php',
'Swift_Transport_AWSTransport' => $vendorDir . '/jmhobbs/swiftmailer-transport-aws-ses/classes/Swift/Transport/AWSTransport.php',
'TrueBV\\Exception\\DomainOutOfBoundsException' => $vendorDir . '/true/punycode/src/Exception/DomainOutOfBoundsException.php',
'TrueBV\\Exception\\LabelOutOfBoundsException' => $vendorDir . '/true/punycode/src/Exception/LabelOutOfBoundsException.php',
'TrueBV\\Exception\\OutOfBoundsException' => $vendorDir . '/true/punycode/src/Exception/OutOfBoundsException.php',
'TrueBV\\Punycode' => $vendorDir . '/true/punycode/src/Punycode.php',
'lessc' => $vendorDir . '/leafo/lessphp/lessc.inc.php',
'lessc_formatter_classic' => $vendorDir . '/leafo/lessphp/lessc.inc.php',

View file

@ -7,6 +7,7 @@ $baseDir = dirname($vendorDir);
return array(
'TrueBV\\' => array($vendorDir . '/true/punycode/src'),
'Nurigo\\' => array($vendorDir . '/coolsms/php-sdk/app/Nurigo'),
'MatthiasMullie\\PathConverter\\' => array($vendorDir . '/matthiasmullie/path-converter/src'),
'MatthiasMullie\\Minify\\' => array($vendorDir . '/matthiasmullie/minify/src'),
'League\\HTMLToMarkdown\\' => array($vendorDir . '/league/html-to-markdown/src'),

View file

@ -92,51 +92,6 @@
"html"
]
},
{
"name": "sunra/php-simple-html-dom-parser",
"version": "v1.5.0",
"version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/sunra/php-simple-html-dom-parser.git",
"reference": "a0b80ace086c7e09085669205e1b3c2c9c7a453c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sunra/php-simple-html-dom-parser/zipball/a0b80ace086c7e09085669205e1b3c2c9c7a453c",
"reference": "a0b80ace086c7e09085669205e1b3c2c9c7a453c",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"time": "2013-05-04 14:32:03",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"Sunra\\PhpSimple\\HtmlDomParser": "Src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "sunra",
"email": "sunra@yandex.ru",
"homepage": "http://github.com/sunra"
}
],
"description": "Composer adaptation of: A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way! Require PHP 5+. Supports invalid HTML. Find tags on an HTML page with selectors just like jQuery. Extract contents from HTML in a single line.",
"homepage": "https://github.com/sunra/php-simple-html-dom-parser",
"keywords": [
"dom",
"html",
"parser"
]
},
{
"name": "rmccue/requests",
"version": "v1.6.1",
@ -188,112 +143,6 @@
"sockets"
]
},
{
"name": "true/punycode",
"version": "v2.0.2",
"version_normalized": "2.0.2.0",
"source": {
"type": "git",
"url": "https://github.com/true/php-punycode.git",
"reference": "74fa01d4de396c40e239794123b3874cb594a30c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/true/php-punycode/zipball/74fa01d4de396c40e239794123b3874cb594a30c",
"reference": "74fa01d4de396c40e239794123b3874cb594a30c",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4.7",
"squizlabs/php_codesniffer": "~2.0"
},
"time": "2016-01-07 17:12:58",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"TrueBV\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Renan Gonçalves",
"email": "renan.saddam@gmail.com"
}
],
"description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)",
"homepage": "https://github.com/true/php-punycode",
"keywords": [
"idna",
"punycode"
]
},
{
"name": "matthiasmullie/minify",
"version": "1.3.34",
"version_normalized": "1.3.34.0",
"source": {
"type": "git",
"url": "https://github.com/matthiasmullie/minify.git",
"reference": "272e46113404f66ced256659552a0cc074a7810f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/272e46113404f66ced256659552a0cc074a7810f",
"reference": "272e46113404f66ced256659552a0cc074a7810f",
"shasum": ""
},
"require": {
"ext-pcre": "*",
"matthiasmullie/path-converter": "~1.0",
"php": ">=5.3.0"
},
"require-dev": {
"matthiasmullie/scrapbook": "~1.0",
"phpunit/phpunit": "~4.8"
},
"time": "2016-03-01 08:00:27",
"bin": [
"bin/minifycss",
"bin/minifyjs"
],
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"MatthiasMullie\\Minify\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Matthias Mullie",
"email": "minify@mullie.eu",
"homepage": "http://www.mullie.eu",
"role": "Developer"
}
],
"description": "CSS & JS minifier",
"homepage": "http://www.minifier.org",
"keywords": [
"JS",
"css",
"javascript",
"minifier",
"minify"
]
},
{
"name": "hautelook/phpass",
"version": "0.3.4",
@ -484,72 +333,6 @@
"description": "lessphp is a compiler for LESS written in PHP.",
"homepage": "http://leafo.net/lessphp/"
},
{
"name": "league/html-to-markdown",
"version": "4.2.0",
"version_normalized": "4.2.0.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
"reference": "9a5becc8c6b520920fb846afefcfd7faf4c31712"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/9a5becc8c6b520920fb846afefcfd7faf4c31712",
"reference": "9a5becc8c6b520920fb846afefcfd7faf4c31712",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xml": "*",
"php": ">=5.3.3"
},
"require-dev": {
"mikehaertl/php-shellcommand": "~1.1.0",
"phpunit/phpunit": "4.*",
"scrutinizer/ocular": "~1.1"
},
"time": "2016-02-01 16:49:02",
"bin": [
"bin/html-to-markdown"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"League\\HTMLToMarkdown\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "http://www.colinodell.com",
"role": "Lead Developer"
},
{
"name": "Nick Cernis",
"email": "nick@cern.is",
"homepage": "http://modernnerd.net",
"role": "Original Author"
}
],
"description": "An HTML-to-markdown conversion helper for PHP",
"homepage": "https://github.com/thephpleague/html-to-markdown",
"keywords": [
"html",
"markdown"
]
},
{
"name": "michelf/php-smartypants",
"version": "1.6.0-beta1",
@ -561,7 +344,7 @@
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-smartypants/zipball/c0465c6d4c5ab853c2fa45df6c10bce7e35cc137",
"url": "https://api.github.com/repos/michelf/php-smartypants/zipball/171a3a2552f33340bf3636bdb4b05eb4e406fbda",
"reference": "c0465c6d4c5ab853c2fa45df6c10bce7e35cc137",
"shasum": ""
},
@ -607,61 +390,6 @@
"typography"
]
},
{
"name": "leafo/scssphp",
"version": "v0.6.3",
"version_normalized": "0.6.3.0",
"source": {
"type": "git",
"url": "https://github.com/leafo/scssphp.git",
"reference": "a27edad3d16635a222d7204706572e24c338aa17"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/a27edad3d16635a222d7204706572e24c338aa17",
"reference": "a27edad3d16635a222d7204706572e24c338aa17",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"kherge/box": "~2.5",
"phpunit/phpunit": "~3.7",
"squizlabs/php_codesniffer": "~2.5"
},
"time": "2016-01-15 02:50:06",
"bin": [
"bin/pscss"
],
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Leafo\\ScssPhp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Leaf Corcoran",
"email": "leafot@gmail.com",
"homepage": "http://leafo.net"
}
],
"description": "scssphp is a compiler for SCSS written in PHP.",
"homepage": "http://leafo.github.io/scssphp/",
"keywords": [
"css",
"less",
"sass",
"scss",
"stylesheet"
]
},
{
"name": "matthiasmullie/path-converter",
"version": "1.0.8",
@ -713,61 +441,6 @@
"relative"
]
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.2",
"version_normalized": "5.4.2.0",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "d8db871a54619458a805229a057ea2af33c753e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/d8db871a54619458a805229a057ea2af33c753e8",
"reference": "d8db871a54619458a805229a057ea2af33c753e8",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1,<0.9.4"
},
"time": "2016-05-01 08:45:47",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4-dev"
}
},
"installation-source": "dist",
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "http://swiftmailer.org",
"keywords": [
"email",
"mail",
"mailer"
]
},
{
"name": "jmhobbs/swiftmailer-transport-aws-ses",
"version": "0.9.2",
@ -812,5 +485,388 @@
"ses",
"swiftmailer"
]
},
{
"name": "leafo/scssphp",
"version": "v0.6.6",
"version_normalized": "0.6.6.0",
"source": {
"type": "git",
"url": "https://github.com/leafo/scssphp.git",
"reference": "6fdfe19d2b13a3f12ba0792227f0718809ce4e4d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/leafo/scssphp/zipball/6fdfe19d2b13a3f12ba0792227f0718809ce4e4d",
"reference": "6fdfe19d2b13a3f12ba0792227f0718809ce4e4d",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"kherge/box": "~2.5",
"phpunit/phpunit": "~3.7",
"squizlabs/php_codesniffer": "~2.5"
},
"time": "2016-09-11 01:34:11",
"bin": [
"bin/pscss"
],
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Leafo\\ScssPhp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Leaf Corcoran",
"email": "leafot@gmail.com",
"homepage": "http://leafo.net"
}
],
"description": "scssphp is a compiler for SCSS written in PHP.",
"homepage": "http://leafo.github.io/scssphp/",
"keywords": [
"css",
"less",
"sass",
"scss",
"stylesheet"
]
},
{
"name": "league/html-to-markdown",
"version": "4.2.2",
"version_normalized": "4.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/html-to-markdown.git",
"reference": "8dfe3b1e6d459b320bec1a4b5499cd9d62796ac0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/8dfe3b1e6d459b320bec1a4b5499cd9d62796ac0",
"reference": "8dfe3b1e6d459b320bec1a4b5499cd9d62796ac0",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-xml": "*",
"php": ">=5.3.3"
},
"require-dev": {
"mikehaertl/php-shellcommand": "~1.1.0",
"phpunit/phpunit": "4.*",
"scrutinizer/ocular": "~1.1"
},
"time": "2016-09-27 12:38:24",
"bin": [
"bin/html-to-markdown"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"League\\HTMLToMarkdown\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Colin O'Dell",
"email": "colinodell@gmail.com",
"homepage": "http://www.colinodell.com",
"role": "Lead Developer"
},
{
"name": "Nick Cernis",
"email": "nick@cern.is",
"homepage": "http://modernnerd.net",
"role": "Original Author"
}
],
"description": "An HTML-to-markdown conversion helper for PHP",
"homepage": "https://github.com/thephpleague/html-to-markdown",
"keywords": [
"html",
"markdown"
]
},
{
"name": "matthiasmullie/minify",
"version": "1.3.39",
"version_normalized": "1.3.39.0",
"source": {
"type": "git",
"url": "https://github.com/matthiasmullie/minify.git",
"reference": "1a6cb6b457690034bde461593edb510949bdd6e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/matthiasmullie/minify/zipball/1a6cb6b457690034bde461593edb510949bdd6e7",
"reference": "1a6cb6b457690034bde461593edb510949bdd6e7",
"shasum": ""
},
"require": {
"ext-pcre": "*",
"matthiasmullie/path-converter": "~1.0",
"php": ">=5.3.0"
},
"require-dev": {
"matthiasmullie/scrapbook": "~1.0",
"phpunit/phpunit": "~4.8"
},
"time": "2016-10-27 22:32:49",
"bin": [
"bin/minifycss",
"bin/minifyjs"
],
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"MatthiasMullie\\Minify\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Matthias Mullie",
"email": "minify@mullie.eu",
"homepage": "http://www.mullie.eu",
"role": "Developer"
}
],
"description": "CSS & JS minifier",
"homepage": "http://www.minifier.org",
"keywords": [
"JS",
"css",
"javascript",
"minifier",
"minify"
]
},
{
"name": "sunra/php-simple-html-dom-parser",
"version": "v1.5.1",
"version_normalized": "1.5.1.0",
"source": {
"type": "git",
"url": "https://github.com/sunra/php-simple-html-dom-parser.git",
"reference": "f910346ce47513a49ed5b8de197cde26c3f0b193"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sunra/php-simple-html-dom-parser/zipball/f910346ce47513a49ed5b8de197cde26c3f0b193",
"reference": "f910346ce47513a49ed5b8de197cde26c3f0b193",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"time": "2016-05-20 11:21:15",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"Sunra\\PhpSimple\\HtmlDomParser": "Src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sunra",
"email": "sunra@yandex.ru",
"homepage": "https://github.com/sunra"
}
],
"description": "Composer adaptation of: A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way! Require PHP 5+. Supports invalid HTML. Find tags on an HTML page with selectors just like jQuery. Extract contents from HTML in a single line.",
"homepage": "https://github.com/sunra/php-simple-html-dom-parser",
"keywords": [
"dom",
"html",
"parser"
]
},
{
"name": "swiftmailer/swiftmailer",
"version": "v5.4.3",
"version_normalized": "5.4.3.0",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"mockery/mockery": "~0.9.1"
},
"time": "2016-07-08 11:51:25",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.4-dev"
}
},
"installation-source": "dist",
"autoload": {
"files": [
"lib/swift_required.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Chris Corbyn"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
}
],
"description": "Swiftmailer, free feature-rich PHP mailer",
"homepage": "http://swiftmailer.org",
"keywords": [
"email",
"mail",
"mailer"
]
},
{
"name": "true/punycode",
"version": "v2.1.0",
"version_normalized": "2.1.0.0",
"source": {
"type": "git",
"url": "https://github.com/true/php-punycode.git",
"reference": "74033cbe9fdd3eba597f8af501947a125b3b8087"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/true/php-punycode/zipball/74033cbe9fdd3eba597f8af501947a125b3b8087",
"reference": "74033cbe9fdd3eba597f8af501947a125b3b8087",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "~4.7",
"squizlabs/php_codesniffer": "~2.0"
},
"time": "2016-08-09 14:50:44",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"TrueBV\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Renan Gonçalves",
"email": "renan.saddam@gmail.com"
}
],
"description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)",
"homepage": "https://github.com/true/php-punycode",
"keywords": [
"idna",
"punycode"
]
},
{
"name": "coolsms/php-sdk",
"version": "v2.0",
"version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/coolsms/php-sdk.git",
"reference": "ce00fea155169dcf2a3759abd41ad20ff80ca0b1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/coolsms/php-sdk/zipball/ce00fea155169dcf2a3759abd41ad20ff80ca0b1",
"reference": "ce00fea155169dcf2a3759abd41ad20ff80ca0b1",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
},
"time": "2016-09-02 03:28:39",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Nurigo\\": "app/Nurigo"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "nurigo",
"email": "contact@nurigo.net",
"homepage": "http://coolsms.co.kr",
"role": "Developer"
}
],
"description": "Send message using PHP and RestAPI[TEST]",
"homepage": "http://coolsms.co.kr",
"keywords": [
"TextMessage",
"cellphone",
"cool",
"coolsms",
"global",
"lms",
"message",
"messages",
"mms",
"mobile",
"nurigo",
"phone",
"sms"
]
}
]

1
vendor/coolsms/php-sdk/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/vendor/

26
vendor/coolsms/php-sdk/README.md vendored Normal file
View file

@ -0,0 +1,26 @@
# Coolsms PHP SDK
Send Message & Alimtalk using PHP and REST API.
## Installation
- The recommended way to install Coolsms PHP SDK is through composer:
```bash
$ composer require coolsms/php-sdk
```
- Package install url ( source code & examples ) : http://www.coolsms.co.kr/download/3130218
- Github : https://github.com/coolsms/php-sdk
## Requirements
* PHP 5.5 or greater
* Composer
* PHP CURL extension
* PHP JSON extension
## Usage
Look at the 'http://www.coolsms.co.kr/PHP_SDK_Example'.

View file

@ -0,0 +1,174 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Api;
use Nurigo\Coolsms;
use Nurigo\Exceptions\CoolsmsSDKException;
require_once __DIR__ . "/../../../bootstrap.php";
/**
* @class GroupMessage
* @brief management group message, using Rest API
*/
class GroupMessage extends Coolsms
{
/**
* @brief create create group ( HTTP Method GET )
* @param object $options {
* @param string charset [optional]
* @param string srk [optional]
* @param string mode [optional]
* @param string delay [optional]
* @param boolean force_sms [optional]
* @param string os_platform [optional]
* @param string dev_lang [optional]
* @param string sdk_version [optional]
* @param string app_version [optional] }
* @return object(group_id)
*/
public function createGroup($options)
{
return $this->request('new_group', $options);
}
/**
* @brief get group list ( HTTP Method GET )
* @param None
* @return array['groupid', 'groupid'...]
*/
public function getGroupList()
{
return $this->request('group_list');
}
/**
* @brief delete groups ( HTTP Method POST )
* @param string $group_ids [required]
* @return object(count)
*/
public function deleteGroups($group_ids)
{
if (!$group_ids) throw new CoolsmsSDKException('group_ids is required', 202);
$options = new \stdClass();
$options->group_ids = $group_ids;
return $this->request('delete_groups', $options, true);
}
/**
* @brief get group info ( HTTP Method GET )
* @param string $group_id [required]
* @return object(group_id, message_count)
*/
public function getGroupInfo($group_id)
{
if (!$group_id) throw new CoolsmsSDKException('group_id is required', 202);
$options = new \stdClass();
$options->group_id = $group_id;
return $this->request(sprintf('groups/%s', $group_id), $options);
}
/**
* @brief add messages to group ( HTTP Method POST )
* @param object $options {
* @param string group_id [required]
* @param string to [required]
* @param string from [required]
* @param string text [required]
* @param string image_id [optional]
* @param string refname [optional]
* @param string country [optional]
* @param string datetime [optional]
* @param string subject [optional]
* @param integer delay [optional] }
* @return object(success_count, error_count, error_list['index':'code', 'index', 'code'])
*/
public function addMessages($options)
{
if (!isset($options->group_id) || !isset($options->to) || !isset($options->text) || !isset($options->from)) {
throw new CoolsmsSDKException('group_id, to, text, from is required', 202);
}
return $this->request(sprintf('groups/%s/add_messages', $options->group_id), $options, true);
}
/**
* @brief add json type messages to group ( HTTP Method POST )
* @param object $options {
* @param string group_id [required]
* @param string messages [required] [{
* @param string to [required]
* @param string from [required]
* @param string text [required]
* @param string image_id [optional]
* @param string refname [optional]
* @param string country [optional]
* @param string datetime [optional]
* @param string subject [optional]
* @param integer delay [optional] }] }
* @return array[object(success_count, error_count, error_list['index':'code', 'index', 'code']), ...]
*/
public function addMessagesJSON($options)
{
if (!isset($options->group_id) || !isset($options->messages)) throw new CoolsmsSDKException('group_id and messages is required', 202);
foreach ($options->messages as $val) {
if (!isset($val->to) || !isset($val->text) || !isset($val->from)) {
throw new CoolsmsSDKException('to, text, from is required', 202);
}
}
$options->messages = json_encode($options->messages);
return $this->request(sprintf('groups/%s/add_messages.json', $options->group_id), $options, true);
}
/**
* @brief get message list ( HTTP Method GET )
* @param string $group_id [required]
* @param integer $offset [optional]
* @param integer $limit [optional]
* @return object(total_count, offset, limit, list['message_id', 'message_id' ...])
*/
public function getMessageList($group_id, $offset = 0, $limit = 20)
{
if (!$group_id) throw new CoolsmsSDKException('group_id is required', 202);
$options = new \stdClass();
$options->group_id = $group_id;
$options->offset = $offset;
$options->limit = $limit;
return $this->request(sprintf('groups/%s/message_list', $options->group_id), $options);
}
/**
* @brief delete message from group ( HTTP Method POST )
* @param string $group_id [required]
* @param string $message_ids [required]
* @return object(success_count)
*/
public function deleteMessages($group_id, $message_ids)
{
if (!$group_id || !$message_ids) throw new CoolsmsSDKException('group_id and message_ids are required', 202);
$options = new \stdClass();
$options->group_id = $group_id;
$options->message_ids = $message_ids;
return $this->request(sprintf('groups/%s/delete_messages', $options->group_id), $options, true);
}
/**
* @brief send group message ( HTTP Method POST )
* @param string $group_id [required]
* @return object(group_id)
*/
public function sendGroupMessage($group_id)
{
if (!$group_id) throw new CoolsmsSDKException('group_id is required', 202);
$options = new \stdClass();
$options->group_id = $group_id;
return $this->request(sprintf('groups/%s/send', $group_id), $options, true);
}
}

View file

@ -0,0 +1,74 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Api;
use Nurigo\Coolsms;
use Nurigo\Exceptions\CoolsmsSDKException;
require_once __DIR__ . "/../../../bootstrap.php";
/**
* @class Image
* @brief management image, using Rest API
*/
class Image extends Coolsms
{
/**
* @brief get image list( HTTP Method GET )
* @param integer $offset [optional]
* @param integer $limit [optional]
* @return object(total_count, offset, limit, list['image_id', 'image_id' ...])
*/
public function getImageList($offset = null, $limit = null)
{
$options = new \stdClass();
$options->offset = $offset;
$options->limit = $limit;
return $this->request('image_list', $options);
}
/**
* @brief get image info ( HTTP Method GET )
* @param string $image_id [required]
* @return object(image_id, file_name, original_name, file_size, width, height)
*/
public function getImageInfo($image_id)
{
if (!$image_id) throw new CoolsmsSDKException('image_id is required', 202);
$options = new \stdClass();
$options->image_id = $image_id;
return $this->request(sprintf('images/%s', $image_id), $options);;
}
/**
* @brief upload image ( HTTP Method POST )
* @param mixed $image [required]
* @param string $encoding [optional]
* @return object(image_id)
*/
public function uploadImage($image, $encoding = null)
{
if (!$image) throw new CoolsmsSDKException('image is required', 202);
$options = new \stdClass();
$options->image = $image;
$options->encoding = $encoding;
return $this->request('upload_image', $options, true);
}
/**
* @brief delete images ( HTTP Method POST )
* @param string $image_ids [required]
* @return object(success_count)
*/
public function deleteImages($image_ids)
{
if (!$image_ids) throw new CoolsmsSDKException('image_ids is required', 202);
$options = new \stdClass();
$options->image_ids = $image_ids;
return $this->request('delete_images', $options, true);
}
}

View file

@ -0,0 +1,108 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Api;
use Nurigo\Coolsms;
use Nurigo\Exceptions\CoolsmsSDKException;
require_once __DIR__ . "/../../../bootstrap.php";
/**
* @class Message
* @brief management message, using Rest API
*/
class Message extends Coolsms
{
/**
* @brief send message ( HTTP Method POST )
* @param object $options {
* @param string to [required]
* @param string from [required]
* @param string text [required]
* @param string type [optional]
* @param mixed image [optional]
* @param string image_encoding [optional]
* @param string refname [optional]
* @param mixed country [optional]
* @param string datetime [optional]
* @param string subject [optional]
* @param string charset [optional]
* @param string srk [optional]
* @param string mode [optional]
* @param string extension [optional]
* @param integer delay [optional]
* @param boolean force_sms [optional]
* @param string app_version [optional] }
* @return object(recipient_number, group_id, message_id, result_code, result_message)
*/
public function send($options)
{
// check require fields. ( 'to, from, 'text' )
if (!isset($options->to) || !isset($options->from) || !isset($options->text)) throw new CoolsmsSDKException('"to, from, text" must be entered', 202);
return $this->request('send', $options, true);
}
/**
* @brief sent message list ( HTTP Method GET )
* @param object $options {
* @param integer offset [optional]
* @param integer limit [optional]
* @param string rcpt [optional]
* @param string start [optional]
* @param string end [optional]
* @param string status [optional]
* @param string status [optional]
* @param string resultcode [optional]
* @param string notin_resultcode [optional]
* @param string message_id [optional]
* @param string group_id [optional] }
* @return object(total count, list_count, page, data['type', 'accepted_time', 'recipient_number', 'group_id', 'message_id', 'status', 'result_code', 'result_message', 'sent_time', 'text'])
*/
public function sent($options = null)
{
return $this->request('sent', $options);
}
/**
* @brief cancel reserve message. mid or gid either one must be entered. ( HTTP Method POST )
* @param string $mid [optional]
* @param string $gid [optional]
* @return None
*/
public function cancel($mid = null, $gid = null)
{
// mid or gid is empty. throw exception
if (!$mid && !$gid) throw new CoolsmsSDKException('mid or gid either one must be entered', 202);
$options = new \stdClass();
if ($mid) $options->mid = $mid;
if ($gid) $options->gid = $gid;
return $this->request('cancel', $options, true);
}
/**
* @brief get remaining balance ( HTTP Method GET )
* @param None
* @return object(cash, point)
*/
public function getBalance()
{
return $this->request('balance');
}
/**
* @brief get status ( HTTP Method GET )
* @param object $options {
* @param integer count [optional]
* @param string unit [optional]
* @param string date [optional]
* @param integer channel [optional] }
* @return object(registdate, sms_average, sms_sk_average, sms_kt_average, sms_lg_average, mms_average, mms_sk_average, mms_kt_average, mms_lg_average)
*/
public function getStatus($options = null)
{
return $this->request('status', $options);
}
}

View file

@ -0,0 +1,116 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Api;
use Nurigo\Coolsms;
use Nurigo\Exceptions\CoolsmsSDKException;
require_once __DIR__ . "/../../../bootstrap.php";
/**
* @class SenderID
* @brief management sender id, using Rest API
*/
class SenderID extends Coolsms
{
/**
* @brief change api name and api version
* @param string $api_key [required]
* @param string $api_secret [required]
* @param boolean $basecamp [optional]
* @return object(group_id)
*/
function __construct($api_key, $api_secret, $basecamp = false)
{
// set api_key and api_secret
parent::__construct($api_key, $api_secret, $basecamp);
// set API and version
$this->setApiConfig("senderid", "1.1");
}
/**
* @brief sender id registration request ( HTTP Method POST )
* @param string $phone [required]
* @param string $site_user [optional]
* @return object(handle_key, ars_number)
*/
public function register($phone, $site_user = null)
{
if (!$phone) throw new CoolsmsSDKException('phone number is required', 202);
$options = new \stdClass();
$options->phone = $phone;
$options->site_user = $site_user;
return $this->request('register', $options, true);
}
/**
* @brief verify sender id ( HTTP Method POST )
* @param string $handle_key [required]
* @return none
*/
public function verify($handle_key)
{
if (!$handle_key) throw new CoolsmsSDKException('handle_key is required', 202);
$options = new \stdClass();
$options->handle_key = $handle_key;
return $this->request('verify', $options, true);
}
/**
* @brief delete sender id ( HTTP Method POST )
* @param string $handle_key [required]
* @return none
*/
public function delete($handle_key)
{
if (!$handle_key) throw new CoolsmsSDKException('handle_key is required', 202);
$options = new \stdClass();
$options->handle_key = $handle_key;
return $this->request('delete', $options, true);
}
/**
* @brief get sender id list ( HTTP Method GET )
* @param string $site_user [optional]
* @return object(site_user, idno, phone_number, flag_default, updatetime, regdate)
*/
public function getSenderidList($site_user = null)
{
$options = new \stdClass();
$options->site_user = $site_user;
return $this->request('list', $options);
}
/**
* @brief set default sender id ( HTTP Method POST )
* @param string $handle_key [required]
* @param string $site_user [optional]
* @return none
*/
public function setDefault($handle_key, $site_user = null)
{
if (!$handle_key) throw new CoolsmsSDKException('handle_key is required', 202);
$options = new \stdClass();
$options->handle_key = $handle_key;
$options->site_user = $site_user;
return $this->request('set_default', $options, true);
}
/**
* @brief get default sender id ( HTTP Method GET )
* @param string $site_user [optional]
* @return object(handle_key, phone_number)
*/
public function getDefault($site_user = null)
{
$options = new \stdClass();
$options->site_user = $site_user;
return $this->request('get_default', $options);
}
}

View file

@ -0,0 +1,295 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
/**
* Copyright (C) 2008-2016 NURIGO \n
* http://www.coolsms.co.kr
*/
/**
* @mainpage PHP SDK
* @section intro 소개
* - 소개 : Coolsms REST API
* - 버전 : 2.0
* - 설명 : Coolsms REST API 이용 보다 빠르고 안전하게 문자메시지를 보낼 있는 PHP로 만들어진 SDK 입니다.
* @section CreateInfo 작성 정보
* - 작성자 : Nurigo
* - 작성일 : 2016/05/13
* @section Caution 주의할 사항
* - PHP SDK 2.0 PSR4에 근거하여 만들어 졌습니다. autoloading namingspace의 개념을 알고 사용 하시는게 좋습니다.
* @section common 기타 정보
* - 저작권 GPL v2
*/
namespace Nurigo;
use Nurigo\Exceptions\CoolsmsServerException;
use Nurigo\Exceptions\CoolsmsSystemException;
use Nurigo\Exceptions\CoolsmsSDKException;
require_once __DIR__ . "/../../bootstrap.php";
// check php extension "curl_init, json_decode"
if (!function_exists('curl_init')) {
throw new CoolsmsSystemException('Coolsms needs the CURL PHP extension.', 301);
}
if (!function_exists('json_decode')) {
throw new CoolsmsSystemException('Coolsms needs the JSON PHP extension.', 301);
}
/**
* @class Coolsms
* @brief Coolsms Rest API core class, using the Rest API
*/
class Coolsms
{
const HOST = "https://api.coolsms.co.kr";
const SDK_VERSION = "2.0";
private $api_name = "sms";
private $api_version = "2";
private $api_key;
private $api_secret;
private $resource;
private $is_post;
private $result;
private $basecamp;
private $user_agent;
private $content;
/**
* @brief Construct
*/
public function __construct($api_key, $api_secret, $basecamp = false)
{
$this->api_key = $api_key;
$this->api_secret = $api_secret;
if (isset($_SERVER['HTTP_USER_AGENT'])) $this->user_agent = $_SERVER['HTTP_USER_AGENT'];
if ($basecamp) $this->basecamp = true;
}
/**
* @brief Process curl
*/
public function curlProcess()
{
$ch = curl_init();
if (!$ch) throw new CoolsmsSystemException(curl_error($ch), 399);
// Set url. is_post true = POST , false = GET
if ($this->is_post) {
$url = sprintf("%s/%s/%s/%s", self::HOST, $this->api_name, $this->api_version, $this->resource);
} else {
$url = sprintf("%s/%s/%s/%s?%s", self::HOST, $this->api_name, $this->api_version, $this->resource, $this->content);
}
// Set curl info
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // check SSL certificate
curl_setopt($ch, CURLOPT_SSLVERSION, 3); // SSL protocol version (need for https connect, 3 -> SSLv3)
curl_setopt($ch, CURLOPT_HEADER, 0); // include the header in the output (1 = true, 0 = false)
curl_setopt($ch, CURLOPT_POST, $this->is_post); // POST GET method
// set POST data
if ($this->is_post) {
$header = array("Content-Type:multipart/form-data");
// route가 있으면 header에 붙여준다. substr 해준 이유는 앞에 @^가 붙기 때문에 자르기 위해서.
if (isset($this->content['route'])) $header[] = "User-Agent:" . substr($this->content['route'], 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:multipart/form-data"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->content);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // TimeOut value
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // curl_exec() result output (1 = true, 0 = false)
$this->result = json_decode(curl_exec($ch));
// unless http status code is 200. throw exception.
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($http_code != 200) throw new CoolsmsServerException($this->result, $http_code);
// check curl errors
if (curl_errno($ch)) throw new CoolsmsSystemException(curl_error($ch), 399);
curl_close($ch);
}
/**
* @brief set http body content
*/
private function setContent($options)
{
// POST method content
if ($this->is_post) {
$this->content = array();
foreach ($options as $key => $val) {
if ($key != "text") $val = trim($val);
if ($key == "image") {
$this->content[$key] = '@' . realpath("$val");
} else {
$this->content[$key] = sprintf("%s", $val);
}
}
return;
}
// GET method content
foreach ($options as $key => $val) {
if ($key != "text") $val = trim($val);
$this->content .= $key . "=" . urlencode($val) . "&";
}
}
/**
* @biref Make a signature with hash_hamac then return the signature
*/
private function getSignature($timestamp, $salt)
{
return hash_hmac('md5', $timestamp . $salt, $this->api_secret);
}
/**
* @brief Set authenticate information
*/
protected function addInfos($options = null)
{
if (!isset($options)) $options = new \stdClass();
if (!isset($options->User_Agent)) $options->User_Agent = sprintf("PHP REST API %s", $this->api_version);
if (!isset($options->os_platform)) $options->os_platform = $this->getOS();
if (!isset($options->dev_lang)) $options->dev_lang = sprintf("PHP %s", phpversion());
if (!isset($options->sdk_version)) $options->sdk_version = sprintf("PHP SDK %s", self::SDK_VERSION);
// set salt & timestamp
$options->salt = uniqid();
$options->timestamp = (string)time();
// If basecamp is true '$coolsms_user' use
isset($this->basecamp) ? $options->coolsms_user = $this->api_key : $options->api_key = $this->api_key;
$options->signature = $this->getSignature($options->timestamp, $options->salt);
$this->setContent($options);
}
/**
* @brief set api resource and http method type
* @param string $resource [required] related information. http://www.coolsms.co.kr/REST_API
* @param boolean $is_post [optional] GET = false, POST = true
*/
protected function setResource($resource, $is_post = false)
{
$this->resource = $resource;
$this->is_post = $is_post;
}
/**
* @brief https request using rest api
* @param string $resource [required]
* @param object $options [optional]
* @param boolean $is_post [optional] GET = false, POST = true
* @return mixed
*/
protected function request($resource, $options = null, $is_post = false)
{
if (!$resource) throw new CoolsmsSDKException('resource is required', 201);
// set http method and rest api path
$this->setResource($resource, $is_post);
// set contents
$this->addInfos($options);
// https request
$this->curlProcess();
// return result
return $this->getResult();
}
/**
* @brief Return result
*/
public function getResult()
{
return $this->result;
}
/**
* @brief set api name and api version
* @param string $api_name [required] 'sms', 'senderid', 'image'
* @param integer $api_version [required]
*/
public function setApiConfig($api_name, $api_version)
{
if (!isset($api_name) || !isset($api_version)) throw new CoolsmsSDKException('API name and version is requried', 201);
$this->api_name = $api_name;
$this->api_version = $api_version;
}
/**
* @brief Return user's current OS
*/
function getOS()
{
$user_agent = $this->user_agent;
$os_platform = "Unknown OS Platform";
$os_array = array(
'/windows nt 10/i' => 'Windows 10',
'/windows nt 6.3/i' => 'Windows 8.1',
'/windows nt 6.2/i' => 'Windows 8',
'/windows nt 6.1/i' => 'Windows 7',
'/windows nt 6.0/i' => 'Windows Vista',
'/windows nt 5.2/i' => 'Windows Server 2003/XP x64',
'/windows nt 5.1/i' => 'Windows XP',
'/windows xp/i' => 'Windows XP',
'/windows nt 5.0/i' => 'Windows 2000',
'/windows me/i' => 'Windows ME',
'/win98/i' => 'Windows 98',
'/win95/i' => 'Windows 95',
'/win16/i' => 'Windows 3.11',
'/macintosh|mac os x/i' => 'Mac OS X',
'/mac_powerpc/i' => 'Mac OS 9',
'/linux/i' => 'Linux',
'/ubuntu/i' => 'Ubuntu',
'/iphone/i' => 'iPhone',
'/ipod/i' => 'iPod',
'/ipad/i' => 'iPad',
'/android/i' => 'Android',
'/blackberry/i' => 'BlackBerry',
'/webos/i' => 'Mobile'
);
foreach ($os_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$os_platform = $value;
}
}
return $os_platform;
}
/**
* @brief Return user's current browser
*/
function getBrowser()
{
$user_agent = $this->user_agent;
$browser = "Unknown Browser";
$browser_array = array(
'/msie/i' => 'Internet Explorer',
'/firefox/i' => 'Firefox',
'/safari/i' => 'Safari',
'/chrome/i' => 'Chrome',
'/opera/i' => 'Opera',
'/netscape/i' => 'Netscape',
'/maxthon/i' => 'Maxthon',
'/konqueror/i' => 'Konqueror',
'/mobile/i' => 'Handheld Browser'
);
foreach ($browser_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$browser = $value;
}
}
return $browser;
}
}

View file

@ -0,0 +1,13 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Exceptions;
/**
* @class CoolsmsException
* @brief Thrown when an SDK call returns an comprehensive exception.
*/
class CoolsmsException extends \Exception
{
}

View file

@ -0,0 +1,12 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Exceptions;
/**
* @class CoolsmsSDKException
* @brief Thrown when an SDK call returns an exception.
*/
class CoolsmsSDKException extends CoolsmsException
{
}

View file

@ -0,0 +1,35 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Exceptions;
/**
* @class CoolsmsServerException
* @brief Thrown when an Server call returns an exception.
*/
class CoolsmsServerException extends CoolsmsException
{
/**
* Coolsms API Response data
*/
protected $response;
protected $response_data;
/**
* @brief Make a new SDK Exception with the given result.
* @param string $response [required] response from the API server & SDK Client
* @param integer $code [required] response code
*/
public function __construct($response, $code) {
$this->response = $response;
$response_data = $response;
parent::__construct(json_encode($response), $code);
}
/**
* @brief return json decoded response data
*/
public function getResponseData() {
return $this->response_data;
}
}

View file

@ -0,0 +1,12 @@
<?php
/* vi:set sw=4 ts=4 expandtab: */
namespace Nurigo\Exceptions;
/**
* @class CoolsmsSystemException
* @brief Thrown when an System call returns an exception.
*/
class CoolsmsSystemException extends CoolsmsException
{
}

2
vendor/coolsms/php-sdk/bootstrap.php vendored Normal file
View file

@ -0,0 +1,2 @@
<?php
require_once __DIR__ . "/../../../vendor/autoload.php";

24
vendor/coolsms/php-sdk/composer.json vendored Normal file
View file

@ -0,0 +1,24 @@
{
"name": "coolsms/php-sdk",
"description": "Send message using PHP and RestAPI[TEST]",
"type": "library",
"keywords": ["coolsms", "nurigo", "sms", "message", "messages", "cool", "textmessage", "mobile", "cellphone", "phone", "mms", "lms", "global"],
"license": "MIT",
"homepage": "http://coolsms.co.kr",
"authors": [
{
"name": "nurigo",
"email": "contact@nurigo.net",
"homepage": "http://coolsms.co.kr",
"role": "Developer"
}
],
"require": {
"php": ">=5.5.0"
},
"autoload": {
"psr-4": {
"Nurigo\\": "app/Nurigo"
}
}
}

20
vendor/coolsms/php-sdk/composer.lock generated vendored Normal file
View file

@ -0,0 +1,20 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "ec683450e574219efd4acfafbd3b213b",
"content-hash": "4caf4ba39832cc096d7930eaf24ad348",
"packages": [],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=5.5.0"
},
"platform-dev": []
}

View file

@ -0,0 +1,46 @@
<?php
/**
* #example_add_messages
*
* This sample code demonstrate how to add messages into group through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// options(to, from, text) are mandatory. must be filled
$options = new stdClass();
$options->to = '01000000000'; // 수신번호
$options->from = '01000000000'; // 발신번호
$options->text = '안녕하세요. 10000건을 20초안에 발송하는 빠르고 저렴한 CoolSMS의 테스팅 문자입니다. '; // 문자내용
$options->group_id = 'GID56CC00E21C4DC'; // group id
// Optional parameters for your own needs
// $options->type = 'SMS'; // Message type ( SMS, LMS, MMS, ATA )
// $options->image_id = 'IM289E9CISNWIC' // image_id. type must be set as 'MMS'
// $options->refname = ''; // Reference name
// $options->country = 82; // Korea(82) Japan(81) America(1) China(86) Default is Korea
// $options->datetime = '20140106153000'; // Format must be(YYYYMMDDHHMISS) 2014 01 06 15 30 00 (2014 Jan 06th 3pm 30 00)
// $options->subject = 'Hello World'; // set msg title for LMS and MMS
// $options->delay = 10; // '0~20' delay messages
// $options->sender_key = '55540253a3e61072...'; // 알림톡 사용을 위해 필요합니다. 신청방법 : http://www.coolsms.co.kr/AboutAlimTalk
// $options->template_code = 'C004'; // 알림톡 template code 입니다. 자세한 설명은 http://www.coolsms.co.kr/AboutAlimTalk을 참조해주세요.
$result = $rest->addMessages($options);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,58 @@
<?php
/**
* #example_add_messages
*
* This sample code demonstrate how to add json type messages into group through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// options(message, group_id) are mandatory. must be filled
$options = new stdClass();
$text = array(
0 => "안녕하세요.",
1 => "10000건을 20초안에 발송하는 빠르고 저렴한",
2 => "CoolSMS의 테스팅 문자입니다.");
$messages = array();
foreach($text as $val) {
$message = new stdClass();
$message->type = "SMS";
$message->to = "01000000000";
$message->from = "01000000000";
$message->text = $val;
$messages[] = $message;
// Optional parameters for your own needs
// $message->type = 'SMS'; // Message type ( SMS, LMS, MMS, ATA )
// $message->image_id = 'IM289E9CISNWIC' // image_id. type must be set as 'MMS'
// $message->refname = ''; // Reference name
// $message->country = 82; // Korea(82) Japan(81) America(1) China(86) Default is Korea
// $message->datetime = '20140106153000'; // Format must be(YYYYMMDDHHMISS) 2014 01 06 15 30 00 (2014 Jan 06th 3pm 30 00)
// $message->subject = 'Hello World'; // set msg title for LMS and MMS
// $message->delay = 10; // '0~20' delay messages
// $message->sender_key = '55540253a3e61072...'; // 알림톡 사용을 위해 필요합니다. 신청방법 : http://www.coolsms.co.kr/AboutAlimTalk
// $message->template_code = 'C004'; // 알림톡 template code 입니다. 자세한 설명은 http://www.coolsms.co.kr/AboutAlimTalk을 참조해주세요.
}
$options->messages = $messages;
$options->group_id = 'GID57317013931B0'; // group id
$result = $rest->addMessagesJSON($options);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,37 @@
<?php
/**
* #example_new_group
*
* This sample code demonstrate how to create sms group through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// Optional parameters for your own needs
$options = new stdClass();
// $options->charset = 'utf8'; // utf8, euckr default value is utf8
// $options->srk = ''; // Solution key
// $options->mode = 'test'; // If 'test' value. refund cash to point
// $options->delay = 10; // '0~20' delay messages
// $options->force_sms = true; // 'true or false' always send sms
// $options->app_version = ''; // App version
$result = $rest->createGroup($options);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_delete_group
*
* This sample code demonstrate how to delete sms group through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// group_ids are mandatory. must be filled
$group_ids = 'GID56CC00E21C4DC'; // ex) '1GCOLS23BDG','RGGBB11545'
$result = $rest->deleteGroups($group_ids);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,32 @@
<?php
/**
* #example_delete_messages
*
* This sample code demonstrate how to delete messages through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// group_id, message_ids are mandatory. must be filled
$group_id = 'GID56CC00E21C4DC'; // group id
$message_ids = '2838DFJFE02EI10TM'; // message ids. ex) '2838DFJFE02EI10TM','RGGBB11545'
$result = $rest->deleteMessages($group_id, $message_ids);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_group_info
*
* This sample code demonstrate how to check group info through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// group_id are mandatory. must be filled
$group_id = 'GIDFIWKEO19DIW29'; // group id
$result = $rest->getGroupInfo($group_id);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,28 @@
<?php
/**
* #example_group_list
*
* This sample code demonstrate how to check group list through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
$result = $rest->getGroupList();
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,33 @@
<?php
/**
* #example_message_list
*
* This sample code demonstrate check message list through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// Optional parameters for your own needs
$group_id = 'GID57317013931B0'; // group id
$offset = 0; // default 0
$limit = 20; // default 20
$result = $rest->getMessageList($group_id, $offset, $limit);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_send
*
* This sample code demonstrate how to send group sms through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// group_id are mandatory. must be filled
$group_id = 'GID56CC00E21C4DC'; // group id. ex) '1GCOLS23BDG'
$result = $rest->sendGroupMessage($group_id);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,44 @@
<?php
/**
* #example_send_process
*
* This sample code demonstrate how to send group message through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\GroupMessage;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
$options = new stdClass();
// initiate rest api sdk object
$rest = new GroupMessage($api_key, $api_secret);
// create group
$result = $rest->createGroup($options);
$group_id = $result->group_id;
print_r($result);
// add messages
$options->to = '01000000000';
$options->from = '01000000000';
$options->text = '안녕하세요. 10000건을 20초안에 발송하는 빠르고 저렴한 CoolSMS의 테스팅 문자입니다. ';
$options->group_id = $group_id; // group id
$result = $rest->addMessages($options);
print_r($result);
// send messages
$result = $rest->sendGroupMessage($group_id);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,32 @@
<?php
/**
* #example_cancel
*
* This sample code demonstrate how to cancel reserved sms through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Message;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Message($api_key, $api_secret);
// Either mid or gid must be entered.
$options = new stdClass();
$mid = 'M52CB443257C61'; // message id.
$gid = 'G52CB4432576C8'; // group id.
$rest->cancel($mid); // if $gid is exists. ex) $rest-cancel(null, $gid);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get 'api.coolsms.co.kr' response code
}

View file

@ -0,0 +1,29 @@
<?php
/**
* #example_balance
*
* This sample code demonstrate how to check cash & point balance through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Message;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Message($api_key, $api_secret);
$result = $rest->getBalance();
print_r($result);
} catch (CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,35 @@
<?php
/**
* #example_sent
*
* This sample code demonstrate how to check sms result through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Message;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Message($api_key, $api_secret);
// set necessary options
$options = new stdClass();
// $options->count = '1'; // 기본값 1이며 1개의 최신 레코드를 받을 수 있음. 10입력시 10분동안의 레코드 목록을 리턴
// $options->unit = 'minute'; // minute(default), hour, day 중 하나 해당 단위의 평균
// $options->date = '20161016230000'; // 데이터를 읽어오는 기준 시각
// $options->channel = '1'; // 1 : 1건 발송채널(default), 2 : 대량 발송 채널
$result = $rest->getStatus($options);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,52 @@
<?php
/**
* #example_send
*
* This sample code demonstrate how to send sms through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Message;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Message($api_key, $api_secret);
// 4 options(to, from, type, text) are mandatory. must be filled
$options = new stdClass();
$options->to = '01000000000'; // 수신번호
$options->from = '01000000000'; // 발신번호
$options->type = 'SMS'; // Message type ( SMS, LMS, MMS, ATA )
$options->text = '안녕하세요. 10000건을 20초안에 발송하는 빠르고 저렴한 CoolSMS의 테스팅 문자입니다. '; // 문자내용
// Optional parameters for your own needs
// $options->image = '../Image/images/test.jpg'; // image for MMS. type must be set as 'MMS'
// $options->image_encoding = 'binary'; // image encoding binary(default), base64
// $options->mode = 'test'; // 'test' 모드. 실제로 발송되지 않으며 전송내역에 60 오류코드로 뜹니다. 차감된 캐쉬는 다음날 새벽에 충전 됩니다.
// $options->delay = 10; // 0~20사이의 값으로 전송지연 시간을 줄 수 있습니다.
// $options->force_sms = true; // 푸시 및 알림톡 이용시에도 강제로 SMS로 발송되도록 할 수 있습니다.
// $options->refname = ''; // Reference name
// $options->country = 'KR'; // Korea(KR) Japan(JP) America(USA) China(CN) Default is Korea
// $options->datetime = '20140106153000'; // Format must be(YYYYMMDDHHMISS) 2014 01 06 15 30 00 (2014 Jan 06th 3pm 30 00)
// $options->mid = 'mymsgid01'; // set message id. Server creates automatically if empty
// $options->gid = 'mymsg_group_id01'; // set group id. Server creates automatically if empty
// $options->subject = 'Hello World'; // set msg title for LMS and MMS
// $options->charset = 'euckr'; // For Korean language, set euckr or utf-8
// $options->sender_key = '55540253a3e61072...'; // 알림톡 사용을 위해 필요합니다. 신청방법 : http://www.coolsms.co.kr/AboutAlimTalk
// $options->template_code = 'C004'; // 알림톡 template code 입니다. 자세한 설명은 http://www.coolsms.co.kr/AboutAlimTalk을 참조해주세요.
// $options->app_version = 'Purplebook 4.1' // 어플리케이션 버전
$result = $rest->send($options);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,38 @@
<?php
/**
* #example_sent
*
* This sample code demonstrate how to check sms result through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Message;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Message($api_key, $api_secret);
// set necessary options
$options = new stdClass();
$options->message_id = 'M52CB443257C61'; //message id
// $options->group_id = 'G52CB4432576C8'; //group id
// $options->count = '40'; //result return counts. default is 20
// $options->page = '1'; //page
// $options->rcpt = '01012345678'; //search sent result by recipient number
// $options->start = '201401070915'; //set search start date ex) 201401070915
// $options->end = '201401071230'; //set search end date ex) 201401071230
$result = $rest->sent($options);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_delete_images
*
* This sample code demonstrate how to delete images through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Image;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Image($api_key, $api_secret);
// image_ids are mandatory. must be filled
$image_ids = ''; // image ids. ex)'IM34BWIDJ12','IMG2559GBB'
$result = $rest->deleteImages($image_ids);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_image_info
*
* This sample code demonstrate how to check image info through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Image;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Image($api_key, $api_secret);
// image_id are mandatory. must be filled
$image_id = ''; // image id
$result = $rest->getImageInfo($image_id);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,32 @@
<?php
/**
* #example_image_list
*
* This sample code demonstrate how to check image list through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Image;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Image($api_key, $api_secret);
// Optional parameters for your own needs
$offset = 0; // default 0
$limit = 20; // default 20
$result = $rest->getImageList($offset, $limit);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,34 @@
<?php
/**
* #example_upload_image
*
* This sample code demonstrate how to upload image through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\Image;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new Image($api_key, $api_secret);
// image are mandatory. must be filled
$image = 'images/test.jpg'; // image
// Optional parameters for your own needs
// $encoding = 'binary'; // image encoding type (base64, binary) default binary
$result = $rest->uploadImage($image); // or $rest->uploadImage($image, $encoding)
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_delete
*
* This sample code demonstrate how to delete sender number through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\SenderID;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new SenderID($api_key, $api_secret);
// handle_key are mandatory. must be filled
$handle_key = 'C29CE02IOE9'; // sender number handle key. check for 'example_list'
$result = $rest->delete($handle_key);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_get_default
*
* This sample code demonstrate how to get default sender number through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\SenderID;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new SenderID($api_key, $api_secret);
// Optional parameters for your own needs
// $site_user = 'admin'; // site user_id. '__private__' is default value
$result = $rest->getDefault(); // or $rest->getDefault($site_user);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_list
*
* This sample code demonstrate how to check sender number list through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\SenderID;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new SenderID($api_key, $api_secret);
// Optional parameters for your own needs
// $site_user = 'admin'; // site user_id. '__private__' is default value
$result = $rest->getSenderidList(); // or $rest->senderidList($site_user);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,34 @@
<?php
/**
* #example_register
*
* This sample code demonstrate how to request sender number register through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\SenderID;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new SenderID($api_key, $api_secret);
// phone are mandatory. must be filled
$phone = '01000000000'; // sender number to register
// Optional parameters for your own needs
// $site_user = 'admin'; // site user_id. '__private__' is default value
$result = $rest->register($phone); // or $rest->register($phone, $site_user);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,34 @@
<?php
/**
* #example_set_default
*
* This sample code demonstrate how to set default sender number through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\SenderID;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new SenderID($api_key, $api_secret);
// handle_key are mandatory. must be filled
$handle_key = 'C29CE02IOE9'; // sender number handle key. check for 'example_list'
// Optional parameters for your own needs
// $site_user = 'admin'; // site user_id. '__private__' is default value
$result = $rest->setDefault($handle_key); // or $rest->setDefault($handle_key, $site_user);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -0,0 +1,31 @@
<?php
/**
* #example_verify
*
* This sample code demonstrate how to verify sender number through CoolSMS Rest API PHP
* for more info, visit
* www.coolsms.co.kr
*/
use Nurigo\Api\SenderID;
use Nurigo\Exceptions\CoolsmsException;
require_once __DIR__ . "/../../bootstrap.php";
// api_key and api_secret can be obtained from www.coolsms.co.kr/credentials
$api_key = '#ENTER_YOUR_OWN#';
$api_secret = '#ENTER_YOUR_OWN#';
try {
// initiate rest api sdk object
$rest = new SenderID($api_key, $api_secret);
// handle_key are mandatory. must be filled
$handle_key = 'C29CE02IOE9'; // after register call. return value
$result = $rest->verify($handle_key);
print_r($result);
} catch(CoolsmsException $e) {
echo $e->getMessage(); // get error message
echo $e->getCode(); // get error code
}

View file

@ -125,20 +125,21 @@ class Compiler
protected $rootEnv;
protected $rootBlock;
protected $env;
protected $scope;
protected $storeEnv;
protected $charsetSeen;
protected $sourceNames;
private $indentLevel;
private $commentsSeen;
private $extends;
private $extendsMap;
private $parsedFiles;
private $env;
private $scope;
private $parser;
private $sourceNames;
private $sourceIndex;
private $sourceLine;
private $sourceColumn;
private $storeEnv;
private $charsetSeen;
private $stderr;
private $shouldEvaluate;
private $ignoreErrors;
@ -207,7 +208,7 @@ class Compiler
*
* @return \Leafo\ScssPhp\Parser
*/
private function parserFactory($path)
protected function parserFactory($path)
{
$parser = new Parser($path, count($this->sourceNames), $this->encoding);
@ -396,23 +397,42 @@ class Compiler
}
if ($this->matchExtendsSingle($part, $origin)) {
$before = array_slice($selector, 0, $i);
$after = array_slice($selector, $i + 1);
$s = count($before);
$before = array_slice($selector, 0, $i);
list($before, $nonBreakableBefore) = $this->extractRelationshipFromFragment($before);
foreach ($origin as $new) {
$k = 0;
// remove shared parts
if ($initial) {
while ($k < $s && isset($new[$k]) && $before[$k] === $new[$k]) {
while ($k < $i && isset($new[$k]) && $selector[$k] === $new[$k]) {
$k++;
}
}
$replacement = [];
$tempReplacement = $k > 0 ? array_slice($new, $k) : $new;
for ($l = count($tempReplacement) - 1; $l >= 0; $l--) {
$slice = $tempReplacement[$l];
array_unshift($replacement, $slice);
if (! $this->isImmediateRelationshipCombinator(end($slice))) {
break;
}
}
$afterBefore = $l != 0 ? array_slice($tempReplacement, 0, $l) : [];
// Merge shared direct relationships.
$mergedBefore = $this->mergeDirectRelationships($afterBefore, $nonBreakableBefore);
$result = array_merge(
$before,
$k > 0 ? array_slice($new, $k) : $new,
$mergedBefore,
$replacement,
$after
);
@ -423,14 +443,22 @@ class Compiler
$out[] = $result;
// recursively check for more matches
$this->matchExtends($result, $out, $i, false);
$this->matchExtends($result, $out, count($before) + count($mergedBefore), false);
// selector sequence merging
if (! empty($before) && count($new) > 1) {
$sharedParts = $k > 0 ? array_slice($before, 0, $k) : [];
$postSharedParts = $k > 0 ? array_slice($before, $k) : $before;
list($injectBetweenSharedParts, $nonBreakable2) = $this->extractRelationshipFromFragment($afterBefore);
$result2 = array_merge(
array_slice($new, 0, -1),
$k > 0 ? array_slice($before, $k) : $before,
array_slice($new, -1),
$sharedParts,
$injectBetweenSharedParts,
$postSharedParts,
$nonBreakable2,
$nonBreakableBefore,
$replacement,
$after
);
@ -467,6 +495,13 @@ class Compiler
}
}
$extendingDecoratedTag = false;
if (count($single) > 1) {
$matches = null;
$extendingDecoratedTag = preg_match('/^[a-z0-9]+$/i', $single[0], $matches) ? $matches[0] : false;
}
foreach ($single as $part) {
if (isset($this->extendsMap[$part])) {
foreach ($this->extendsMap[$part] as $idx) {
@ -496,7 +531,17 @@ class Compiler
return false;
}
$combined = $this->combineSelectorSingle(end($new), $rem);
$replacement = end($new);
// Extending a decorated tag with another tag is not possible.
if ($extendingDecoratedTag && $replacement[0] != $extendingDecoratedTag &&
preg_match('/^[a-z0-9]+$/i', $replacement[0])
) {
unset($origin[$j]);
continue;
}
$combined = $this->combineSelectorSingle($replacement, $rem);
if (count(array_diff($combined, $origin[$j][count($origin[$j]) - 1]))) {
$origin[$j][count($origin[$j]) - 1] = $combined;
@ -511,6 +556,39 @@ class Compiler
return $found;
}
/**
* Extract a relationship from the fragment.
*
* When extracting the last portion of a selector we will be left with a
* fragment which may end with a direction relationship combinator. This
* method will extract the relationship fragment and return it along side
* the rest.
*
* @param array $fragment The selector fragment maybe ending with a direction relationship combinator.
* @return array The selector without the relationship fragment if any, the relationship fragment.
*/
protected function extractRelationshipFromFragment(array $fragment)
{
$parents = [];
$children = [];
$j = $i = count($fragment);
for (;;) {
$children = $j != $i ? array_slice($fragment, $j, $i - $j) : [];
$parents = array_slice($fragment, 0, $j);
$slice = end($parents);
if (empty($slice) || ! $this->isImmediateRelationshipCombinator($slice[0])) {
break;
}
$j -= 2;
}
return [$parents, $children];
}
/**
* Combine selector single
*
@ -1283,6 +1361,37 @@ class Compiler
return $out;
}
protected function mergeDirectRelationships($selectors1, $selectors2)
{
if (empty($selectors1) || empty($selectors2)) {
return array_merge($selectors1, $selectors2);
}
$part1 = end($selectors1);
$part2 = end($selectors2);
if (! $this->isImmediateRelationshipCombinator($part1[0]) || $part1 !== $part2) {
return array_merge($selectors1, $selectors2);
}
$merged = [];
do {
$part1 = array_pop($selectors1);
$part2 = array_pop($selectors2);
if ($this->isImmediateRelationshipCombinator($part1[0]) && $part1 !== $part2) {
$merged = array_merge($selectors1, [$part1], $selectors2, [$part2], $merged);
break;
}
array_unshift($merged, $part1);
array_unshift($merged, [array_pop($selectors1)[0] . array_pop($selectors2)[0]]);
} while (! empty($selectors1) && ! empty($selectors2));
return $merged;
}
/**
* Merge media types
*
@ -1460,9 +1569,9 @@ class Compiler
list(, $name, $value) = $child;
if ($name[0] === Type::T_VARIABLE) {
$flag = isset($child[3]) ? $child[3] : null;
$isDefault = $flag === '!default';
$isGlobal = $flag === '!global';
$flags = isset($child[3]) ? $child[3] : [];
$isDefault = in_array('!default', $flags);
$isGlobal = in_array('!global', $flags);
if ($isGlobal) {
$this->set($name[1], $this->reduce($value), false, $this->rootEnv);
@ -1622,7 +1731,7 @@ class Compiler
$end = $end[1];
$d = $start < $end ? 1 : -1;
while (true) {
for (;;) {
if ((! $for->until && $start - $d == $end) ||
($for->until && $start == $end)
) {
@ -1695,6 +1804,9 @@ class Compiler
$this->pushEnv();
$this->env->depth--;
$storeEnv = $this->storeEnv;
$this->storeEnv = $this->env;
if (isset($content)) {
$content->scope = $callingScope;
@ -1709,6 +1821,8 @@ class Compiler
$this->compileChildrenNoReturn($mixin->children, $out);
$this->storeEnv = $storeEnv;
$this->popEnv();
break;
@ -1717,7 +1831,9 @@ class Compiler
?: $this->get(self::$namespaces['special'] . 'content', false, $this->env);
if (! $content) {
$this->throwError('Expected @content inside of mixin');
$content = new \stdClass();
$content->scope = new \stdClass();
$content->children = $this->storeEnv->parent->block->children;
break;
}
@ -1742,7 +1858,7 @@ class Compiler
$line = $this->sourceLine;
$value = $this->compileValue($this->reduce($value, true));
echo "Line $line WARN: $value\n";
fwrite($this->stderr, "Line $line WARN: $value\n");
break;
case Type::T_ERROR:
@ -1802,6 +1918,18 @@ class Compiler
return $value !== self::$false && $value !== self::$null;
}
/**
* Is the value a direct relationship combinator?
*
* @param string $value
*
* @return bool
*/
protected function isImmediateRelationshipCombinator($value)
{
return $value === '>' || $value === '+' || $value === '~';
}
/**
* Should $value cause its operand to eval
*
@ -2216,7 +2344,7 @@ class Compiler
return;
}
if ($left !== self::$false) {
if ($left !== self::$false and $left !== self::$null) {
return $this->reduce($right, true);
}
@ -2238,7 +2366,7 @@ class Compiler
return;
}
if ($left !== self::$false) {
if ($left !== self::$false and $left !== self::$null) {
return $left;
}
@ -2937,20 +3065,28 @@ class Compiler
*/
public function get($name, $shouldThrow = true, Environment $env = null)
{
$name = $this->normalizeName($name);
$normalizedName = $this->normalizeName($name);
$specialContentKey = self::$namespaces['special'] . 'content';
if (! isset($env)) {
$env = $this->getStoreEnv();
}
$hasNamespace = $name[0] === '^' || $name[0] === '@' || $name[0] === '%';
$nextIsRoot = false;
$hasNamespace = $normalizedName[0] === '^' || $normalizedName[0] === '@' || $normalizedName[0] === '%';
for (;;) {
if (array_key_exists($name, $env->store)) {
return $env->store[$name];
if (array_key_exists($normalizedName, $env->store)) {
return $env->store[$normalizedName];
}
if (! $hasNamespace && isset($env->marker)) {
if (! $nextIsRoot && ! empty($env->store[$specialContentKey])) {
$env = $env->store[$specialContentKey]->scope;
$nextIsRoot = true;
continue;
}
$env = $this->rootEnv;
continue;
}
@ -3303,7 +3439,7 @@ class Compiler
*
* @throws \Exception
*/
private function handleImportLoop($name)
protected function handleImportLoop($name)
{
for ($env = $this->env; $env; $env = $env->parent) {
$file = $this->sourceNames[$env->block->sourceIndex];
@ -3346,6 +3482,9 @@ class Compiler
$this->pushEnv();
$storeEnv = $this->storeEnv;
$this->storeEnv = $this->env;
// set the args
if (isset($func->args)) {
$this->applyArguments($func->args, $argValues);
@ -3360,6 +3499,8 @@ class Compiler
$ret = $this->compileChildren($func->children, $tmp);
$this->storeEnv = $storeEnv;
$this->popEnv();
$returnValue = ! isset($ret) ? self::$defaultValue : $ret;
@ -3611,7 +3752,7 @@ class Compiler
}
if ($value === null) {
$value = self::$null;
return self::$null;
}
if (is_numeric($value)) {
@ -3622,6 +3763,29 @@ class Compiler
return self::$emptyString;
}
if (preg_match('/^(#([0-9a-f]{6})|#([0-9a-f]{3}))$/i', $value, $m)) {
$color = [Type::T_COLOR];
if (isset($m[3])) {
$num = hexdec($m[3]);
foreach ([3, 2, 1] as $i) {
$t = $num & 0xf;
$color[$i] = $t << 4 | $t;
$num >>= 4;
}
} else {
$num = hexdec($m[2]);
foreach ([3, 2, 1] as $i) {
$color[$i] = $num & 0xff;
$num >>= 8;
}
}
return $color;
}
return [Type::T_KEYWORD, $value];
}

View file

@ -142,11 +142,16 @@ class Parser
*/
public function parse($buffer)
{
// strip BOM (byte order marker)
if (substr($buffer, 0, 3) === "\xef\xbb\xbf") {
$buffer = substr($buffer, 3);
}
$this->buffer = rtrim($buffer, "\x00..\x1f");
$this->count = 0;
$this->env = null;
$this->inParens = false;
$this->eatWhiteDefault = true;
$this->buffer = rtrim($buffer, "\x00..\x1f");
$this->saveEncoding();
$this->extractLineNumbers($buffer);
@ -617,8 +622,8 @@ class Parser
$this->end()
) {
// check for '!flag'
$assignmentFlag = $this->stripAssignmentFlag($value);
$this->append([Type::T_ASSIGN, $name, $value, $assignmentFlag], $s);
$assignmentFlags = $this->stripAssignmentFlags($value);
$this->append([Type::T_ASSIGN, $name, $value, $assignmentFlags], $s);
return true;
}
@ -895,7 +900,7 @@ class Parser
$len = strlen($what);
if (substr($this->buffer, $this->count, $len) === $what) {
if (strcasecmp(substr($this->buffer, $this->count, $len), $what) === 0) {
$this->count += $len;
if ($eatWhitespace) {
@ -2287,25 +2292,29 @@ class Parser
*
* @param array $value
*
* @return string
* @return array
*/
protected function stripAssignmentFlag(&$value)
protected function stripAssignmentFlags(&$value)
{
$token = &$value;
$flags = [];
for ($token = &$value; $token[0] === Type::T_LIST && ($s = count($token[2])); $token = &$lastNode) {
$lastNode = &$token[2][$s - 1];
if ($lastNode[0] === Type::T_KEYWORD && in_array($lastNode[1], ['!default', '!global'])) {
while ($lastNode[0] === Type::T_KEYWORD && in_array($lastNode[1], ['!default', '!global'])) {
array_pop($token[2]);
$node = end($token[2]);
$token = $this->flattenList($token);
return $lastNode[1];
$flags[] = $lastNode[1];
$lastNode = $node;
}
}
return false;
return $flags;
}
/**

View file

@ -18,5 +18,5 @@ namespace Leafo\ScssPhp;
*/
class Version
{
const VERSION = 'v0.6.3';
const VERSION = 'v0.6.6';
}

View file

@ -4,6 +4,18 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip
## [Unreleased][unreleased]
## [4.2.2]
### Fixed
- Fixed sanitization bug which sometimes removes desired content (#63, #101)
## [4.2.1]
### Fixed
- Fixed path to autoload.php when used as a library (#98)
- Fixed edge case for tags containing only whitespace (#99)
### Removed
- Removed double HTML entity decoding, as this is not desireable (#60)
## [4.2.0]
### Added
@ -136,7 +148,9 @@ not ideally set, so this releases fixes that. Moving forwards this should reduce
### Added
- Initial release
[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.2.0...master
[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/4.2.2...master
[4.2.2]: https://github.com/thephpleague/html-to-markdown/compare/4.2.1...4.2.2
[4.2.1]: https://github.com/thephpleague/html-to-markdown/compare/4.2.0...4.2.1
[4.2.0]: https://github.com/thephpleague/html-to-markdown/compare/4.1.1...4.2.0
[4.1.1]: https://github.com/thephpleague/html-to-markdown/compare/4.1.0...4.1.1
[4.1.0]: https://github.com/thephpleague/html-to-markdown/compare/4.0.1...4.1.0

View file

@ -97,7 +97,7 @@ function requireAutoloader()
// Local package usage
__DIR__ . '/../vendor/autoload.php',
// Package was included as a library
__DIR__ . '/../../../vendor/autoload.php',
__DIR__ . '/../../../autoload.php',
);
foreach ($autoloadPaths as $path) {
if (file_exists($path)) {

View file

@ -31,6 +31,10 @@ class EmphasisConverter implements ConverterInterface, ConfigurationAwareInterfa
$tag = $element->getTagName();
$value = $element->getValue();
if (!trim($value)) {
return '';
}
if ($tag === 'i' || $tag === 'em') {
$style = $this->config->getOption('italic_style');
} else {

View file

@ -197,10 +197,29 @@ class HtmlConverter
protected function sanitize($markdown)
{
$markdown = html_entity_decode($markdown, ENT_QUOTES, 'UTF-8');
$markdown = html_entity_decode($markdown, ENT_QUOTES, 'UTF-8'); // Double decode to cover cases like &amp;nbsp; http://www.php.net/manual/en/function.htmlentities.php#99984
$markdown = preg_replace('/<!DOCTYPE [^>]+>/', '', $markdown); // Strip doctype declaration
$unwanted = array('<html>', '</html>', '<body>', '</body>', '<head>', '</head>', '<?xml encoding="UTF-8">', '&#xD;');
$markdown = str_replace($unwanted, '', $markdown); // Strip unwanted tags
$markdown = trim($markdown); // Remove blank spaces at the beggining of the html
/*
* Removing unwanted tags. Tags should be added to the array in the order they are expected.
* XML, html and body opening tags should be in that order. Same case with closing tags
*/
$unwanted = array('<?xml encoding="UTF-8">', '<html>', '</html>', '<body>', '</body>', '<head>', '</head>', '&#xD;');
foreach ($unwanted as $tag) {
if (strpos($tag, '/') === false) {
// Opening tags
if (strpos($markdown, $tag) === 0) {
$markdown = substr($markdown, strlen($tag));
}
} else {
// Closing tags
if (strpos($markdown, $tag) === strlen($markdown) - strlen($tag)) {
$markdown = substr($markdown, 0, -strlen($tag));
}
}
}
$markdown = trim($markdown, "\n\r\0\x0B");
return $markdown;

View file

@ -45,3 +45,19 @@ interface
protected
implements
instanceof
abstract
boolean
byte
char
double
final
float
goto
int
long
native
short
synchronized
throws
transient
volatile

View file

@ -0,0 +1,46 @@
+
-
*
/
%
=
+=
-=
*=
/=
%=
<<=
>>=
>>>=
&=
^=
|=
&
|
^
~
<<
>>
>>>
==
===
!=
!==
>
<
>=
<=
&&
||
!
.
[
]
?
:
,
;
(
)
{
}

View file

@ -41,5 +41,4 @@
;
(
)
{
}

View file

@ -12,7 +12,7 @@ use MatthiasMullie\PathConverter\Converter;
*
* @author Matthias Mullie <minify@mullie.eu>
* @author Tijs Verkoyen <minify@verkoyen.eu>
* @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved.
* @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved
* @license MIT License
*/
class CSS extends Minify
@ -76,7 +76,6 @@ class CSS extends Minify
protected function moveImportsToTop($content)
{
if (preg_match_all('/@import[^;]+;/', $content, $matches)) {
// remove from content
foreach ($matches[0] as $import) {
$content = str_replace($import, '', $content);
@ -84,7 +83,7 @@ class CSS extends Minify
// add to top
$content = implode('', $matches[0]).$content;
};
}
return $content;
}
@ -95,9 +94,9 @@ class CSS extends Minify
* @import's will be loaded and their content merged into the original file,
* to save HTTP requests.
*
* @param string $source The file to combine imports for.
* @param string $content The CSS content to combine imports for.
* @param string[] $parents Parent paths, for circular reference checks.
* @param string $source The file to combine imports for
* @param string $content The CSS content to combine imports for
* @param string[] $parents Parent paths, for circular reference checks
*
* @return string
*
@ -247,8 +246,8 @@ class CSS extends Minify
* @url(image.jpg) images will be loaded and their content merged into the
* original file, to save HTTP requests.
*
* @param string $source The file to import files for.
* @param string $content The CSS content to import files for.
* @param string $source The file to import files for
* @param string $content The CSS content to import files for
*
* @return string
*/
@ -291,10 +290,10 @@ class CSS extends Minify
* Minify the data.
* Perform CSS optimizations.
*
* @param string[optional] $path Path to write the data to.
* @param string[] $parents Parent paths, for circular reference checks.
* @param string[optional] $path Path to write the data to
* @param string[] $parents Parent paths, for circular reference checks
*
* @return string The minified data.
* @return string The minified data
*/
public function execute($path = null, $parents = array())
{
@ -315,6 +314,7 @@ class CSS extends Minify
$css = $this->stripWhitespace($css);
$css = $this->shortenHex($css);
$css = $this->shortenZeroes($css);
$css = $this->shortenFontWeights($css);
$css = $this->stripEmptyTags($css);
// restore the string we've extracted earlier
@ -351,7 +351,7 @@ class CSS extends Minify
* (e.g. ../../images/image.gif, if the new CSS file is 1 folder deeper).
*
* @param Converter $converter Relative path converter
* @param string $content The CSS content to update relative urls for.
* @param string $content The CSS content to update relative urls for
*
* @return string
*/
@ -479,7 +479,7 @@ class CSS extends Minify
* Shorthand hex color codes.
* #FF0000 -> #F00.
*
* @param string $content The CSS content to shorten the hex color codes for.
* @param string $content The CSS content to shorten the hex color codes for
*
* @return string
*/
@ -487,13 +487,65 @@ class CSS extends Minify
{
$content = preg_replace('/(?<![\'"])#([0-9a-z])\\1([0-9a-z])\\2([0-9a-z])\\3(?![\'"])/i', '#$1$2$3', $content);
return $content;
// we can shorten some even more by replacing them with their color name
$colors = array(
'#F0FFFF' => 'azure',
'#F5F5DC' => 'beige',
'#A52A2A' => 'brown',
'#FF7F50' => 'coral',
'#FFD700' => 'gold',
'#808080' => 'gray',
'#008000' => 'green',
'#4B0082' => 'indigo',
'#FFFFF0' => 'ivory',
'#F0E68C' => 'khaki',
'#FAF0E6' => 'linen',
'#800000' => 'maroon',
'#000080' => 'navy',
'#808000' => 'olive',
'#CD853F' => 'peru',
'#FFC0CB' => 'pink',
'#DDA0DD' => 'plum',
'#800080' => 'purple',
'#F00' => 'red',
'#FA8072' => 'salmon',
'#A0522D' => 'sienna',
'#C0C0C0' => 'silver',
'#FFFAFA' => 'snow',
'#D2B48C' => 'tan',
'#FF6347' => 'tomato',
'#EE82EE' => 'violet',
'#F5DEB3' => 'wheat',
);
return str_ireplace(array_keys($colors), $colors, $content);
}
/**
* Shorten CSS font weights.
*
* @param string $content The CSS content to shorten the font weights for
*
* @return string
*/
protected function shortenFontWeights($content)
{
$weights = array(
'normal' => 400,
'bold' => 700,
);
$callback = function ($match) use ($weights) {
return $match[1].$weights[$match[2]];
};
return preg_replace_callback('/(font-weight\s*:\s*)('.implode('|', array_keys($weights)).')(?=[;}])/', $callback, $content);
}
/**
* Shorthand 0 values to plain 0, instead of e.g. -0em.
*
* @param string $content The CSS content to shorten the zero values for.
* @param string $content The CSS content to shorten the zero values for
*
* @return string
*/
@ -527,6 +579,24 @@ class CSS extends Minify
// strip negative zeroes (-0 -> 0) & truncate zeroes (00 -> 0)
$content = preg_replace('/'.$before.'-?0+'.$units.'?'.$after.'/', '0\\1', $content);
// remove zeroes where they make no sense in calc: e.g. calc(100px - 0)
// the 0 doesn't have any effect, and this isn't even valid without unit
// strip all `+ 0` or `- 0` occurrences: calc(10% + 0) -> calc(10%)
// looped because there may be multiple 0s inside 1 group of parentheses
do {
$previous = $content;
$content = preg_replace('/\(([^\(\)]+)\s+[\+\-]\s+0(\s+[^\(\)]+)?\)/', '(\\1\\2)', $content);
} while ($content !== $previous);
// strip all `0 +` occurrences: calc(0 + 10%) -> calc(10%)
$content = preg_replace('/\(\s*0\s+\+\s+([^\(\)]+)\)/', '(\\1)', $content);
// strip all `0 -` occurrences: calc(0 - 10%) -> calc(-10%)
$content = preg_replace('/\(\s*0\s+\-\s+([^\(\)]+)\)/', '(-\\1)', $content);
// I'm not going to attempt to optimize away `x * 0` instances:
// it's dumb enough code already that it likely won't occur, and it's
// too complex to do right (order of operations would have to be
// respected etc)
// what I cared about most here was fixing incorrectly truncated units
return $content;
}
@ -553,7 +623,7 @@ class CSS extends Minify
/**
* Strip whitespace.
*
* @param string $content The CSS content to strip the whitespace for.
* @param string $content The CSS content to strip the whitespace for
*
* @return string
*/
@ -587,7 +657,7 @@ class CSS extends Minify
/**
* Check if file is small enough to be imported.
*
* @param string $path The path to the file.
* @param string $path The path to the file
*
* @return bool
*/

View file

@ -9,7 +9,7 @@ namespace MatthiasMullie\Minify;
*
* @author Matthias Mullie <minify@mullie.eu>
* @author Tijs Verkoyen <minify@verkoyen.eu>
* @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved.
* @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved
* @license MIT License
*/
class JS extends Minify
@ -64,6 +64,17 @@ class JS extends Minify
*/
protected $keywordsAfter = array();
/**
* List of all JavaScript operators.
*
* Will be loaded from /data/js/operators.txt
*
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators
*
* @var string[]
*/
protected $operators = array();
/**
* List of JavaScript operators that accept a <variable, value, ...> after
* them. Some end of lines are not the end of a statement, like with these
@ -111,6 +122,7 @@ class JS extends Minify
$this->keywordsReserved = file($dataDir.'keywords_reserved.txt', $options);
$this->keywordsBefore = file($dataDir.'keywords_before.txt', $options);
$this->keywordsAfter = file($dataDir.'keywords_after.txt', $options);
$this->operators = file($dataDir.'operators.txt', $options);
$this->operatorsBefore = file($dataDir.'operators_before.txt', $options);
$this->operatorsAfter = file($dataDir.'operators_after.txt', $options);
}
@ -119,9 +131,9 @@ class JS extends Minify
* Minify the data.
* Perform JS optimizations.
*
* @param string[optional] $path Path to write the data to.
* @param string[optional] $path Path to write the data to
*
* @return string The minified data.
* @return string The minified data
*/
public function execute($path = null)
{
@ -156,9 +168,9 @@ class JS extends Minify
$this->extractRegex();
$content = $this->replace($content);
$content = $this->stripWhitespace($content);
$content = $this->propertyNotation($content);
$content = $this->shortenBools($content);
$content = $this->stripWhitespace($content);
/*
* Earlier, we extracted strings & regular expressions and replaced them
@ -205,25 +217,27 @@ class JS extends Minify
$callback = function ($match) use ($minifier) {
$count = count($minifier->extracted);
$placeholder = '/'.$count.'/';
$minifier->extracted[$placeholder] = $match[1];
$minifier->extracted[$placeholder] = $match[0];
return $placeholder;
};
// it's a regex if we can find an opening and (not escaped) closing /,
// include \n because it may be there for a reason
// (https://github.com/matthiasmullie/minify/issues/56)
$pattern = '(\/.*?(?<!\\\\)(\\\\\\\\)*+\/\n?)';
$pattern = '\/.*?(?<!\\\\)(\\\\\\\\)*+\/[gimy]*(?![0-9a-zA-Z\/])';
// / can't be preceded by variable, value, or similar because then
// it's going to be division
// checking for that is complex, so we'll do inverse:
// * at the beginning of the file, it's not division, but regex
$this->registerPattern('/^\s*\K'.$pattern.'/', $callback);
// * following another operator, it's not division, but regex
// a regular expression can only be followed by a few operators or some
// of the RegExp methods (a `\` followed by a variable or value is
// likely part of a division, not a regex)
$after = '[\.,;\)\}]';
$methods = '\.(exec|test|match|search|replace|split)\(';
$this->registerPattern('/'.$pattern.'(?=\s*('.$after.'|'.$methods.'))/', $callback);
// 1 more edge case: a regex can be followed by a lot more operators or
// keywords if there's a newline (ASI) in between, where the operator
// actually starts a new statement
// (https://github.com/matthiasmullie/minify/issues/56)
$operators = $this->getOperatorsForRegex($this->operatorsBefore, '/');
$operators += $this->getKeywordsForRegex($this->keywordsReserved, '/');
$this->registerPattern('/(?:'.implode('|', $operators).')\s*\K'.$pattern.'/', $callback);
$operators += $this->getOperatorsForRegex($this->keywordsReserved, '/');
$this->registerPattern('/'.$pattern.'\s*\n?(?=\s*('.implode('|', $operators).'))/', $callback);
}
/**
@ -238,7 +252,7 @@ class JS extends Minify
* Because it's sometimes hard to tell if a newline is part of a statement
* that should be terminated or not, we'll just leave some of them alone.
*
* @param string $content The content to strip the whitespace for.
* @param string $content The content to strip the whitespace for
*
* @return string
*/
@ -256,17 +270,19 @@ class JS extends Minify
// collapse consecutive line feeds into just 1
$content = preg_replace('/\n+/', "\n", $content);
$before = $this->getOperatorsForRegex($this->operatorsBefore, '/');
$after = $this->getOperatorsForRegex($this->operatorsAfter, '/');
$operators = $before + $after;
$operatorsBefore = $this->getOperatorsForRegex($this->operatorsBefore, '/');
$operatorsAfter = $this->getOperatorsForRegex($this->operatorsAfter, '/');
$operators = $this->getOperatorsForRegex($this->operators, '/');
$keywordsBefore = $this->getKeywordsForRegex($this->keywordsBefore, '/');
$keywordsAfter = $this->getKeywordsForRegex($this->keywordsAfter, '/');
// strip whitespace that ends in (or next line begin with) an operator
// that allows statements to be broken up over multiple lines
unset($before['+'], $before['-'], $after['+'], $after['-']);
unset($operatorsBefore['+'], $operatorsBefore['-'], $operatorsAfter['+'], $operatorsAfter['-']);
$content = preg_replace(
array(
'/('.implode('|', $before).')\s+/',
'/\s+('.implode('|', $after).')/',
'/('.implode('|', $operatorsBefore).')\s+/',
'/\s+('.implode('|', $operatorsAfter).')/',
), '\\1', $content
);
@ -278,19 +294,20 @@ class JS extends Minify
), '\\1', $content
);
// collapse whitespace around reserved words into single space
$content = preg_replace('/(^|[;\}\s])\K('.implode('|', $keywordsBefore).')\s+/', '\\2 ', $content);
$content = preg_replace('/\s+('.implode('|', $keywordsAfter).')(?=([;\{\s]|$))/', ' \\1', $content);
/*
* We didn't strip whitespace after a couple of operators because they
* could be used in different contexts and we can't be sure it's ok to
* strip the newlines. However, we can safely strip any non-line feed
* whitespace that follows them.
*/
$content = preg_replace('/([\}\)\]])[^\S\n]+(?!'.implode('|', $operators).')/', '\\1', $content);
// collapse whitespace around reserved words into single space
$before = $this->getKeywordsForRegex($this->keywordsBefore, '/');
$after = $this->getKeywordsForRegex($this->keywordsAfter, '/');
$content = preg_replace('/(^|[;\}\s])\K('.implode('|', $before).')\s+/', '\\2 ', $content);
$content = preg_replace('/\s+('.implode('|', $after).')(?=([;\{\s]|$))/', ' \\1', $content);
$operatorsDiffBefore = array_diff($operators, $operatorsBefore);
$operatorsDiffAfter = array_diff($operators, $operatorsAfter);
$content = preg_replace('/('.implode('|', $operatorsDiffBefore).')[^\S\n]+/', '\\1', $content);
$content = preg_replace('/[^\S\n]+('.implode('|', $operatorsDiffAfter).')/', '\\1', $content);
/*
* Get rid of double semicolons, except where they can be used like:
@ -450,7 +467,7 @@ class JS extends Minify
$keywords = $this->getKeywordsForRegex($keywords);
$keywords = '(?<!'.implode(')(?<!', $keywords).')';
return preg_replace_callback('/(?<='.$previousChar.'|\])'.$keywords.'\[(([\'"])[0-9]+\\2)\]/u', $callback, $content);
return preg_replace_callback('/(?<='.$previousChar.'|\])'.$keywords.'\[\s*(([\'"])[0-9]+\\2)\s*\]/u', $callback, $content);
}
/**
@ -462,8 +479,8 @@ class JS extends Minify
*/
protected function shortenBools($content)
{
$content = preg_replace('/\btrue\b/', '!0', $content);
$content = preg_replace('/\bfalse\b/', '!1', $content);
$content = preg_replace('/\btrue\b(?!:)/', '!0', $content);
$content = preg_replace('/\bfalse\b(?!:)/', '!1', $content);
// for(;;) is exactly the same as while(true)
$content = preg_replace('/\bwhile\(!0\){/', 'for(;;){', $content);

View file

@ -11,7 +11,7 @@ use Psr\Cache\CacheItemInterface;
* Please report bugs on https://github.com/matthiasmullie/minify/issues
*
* @author Matthias Mullie <minify@mullie.eu>
* @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved.
* @copyright Copyright (c) 2012, Matthias Mullie. All rights reserved
* @license MIT License
*/
abstract class Minify
@ -53,7 +53,7 @@ abstract class Minify
/**
* Add a file or straight-up code to be minified.
*
* @param string $data
* @param string|string[] $data
*/
public function add($data /* $data = null, ... */)
{
@ -65,6 +65,11 @@ abstract class Minify
// this method can be overloaded
foreach ($args as $data) {
if (is_array($data)) {
call_user_func_array(array($this, 'add'), $data);
continue;
}
// redefine var
$data = (string) $data;
@ -72,6 +77,10 @@ abstract class Minify
$value = $this->load($data);
$key = ($data != $value) ? $data : count($this->data);
// replace CR linefeeds etc.
// @see https://github.com/matthiasmullie/minify/pull/139
$value = str_replace(array("\r\n", "\r"), "\n", $value);
// store data
$this->data[$key] = $value;
}
@ -80,9 +89,9 @@ abstract class Minify
/**
* Minify the data & (optionally) saves it to a file.
*
* @param string[optional] $path Path to write the data to.
* @param string[optional] $path Path to write the data to
*
* @return string The minified data.
* @return string The minified data
*/
public function minify($path = null)
{
@ -99,10 +108,10 @@ abstract class Minify
/**
* Minify & gzip the data & (optionally) saves it to a file.
*
* @param string[optional] $path Path to write the data to.
* @param int[optional] $level Compression level, from 0 to 9.
* @param string[optional] $path Path to write the data to
* @param int[optional] $level Compression level, from 0 to 9
*
* @return string The minified & gzipped data.
* @return string The minified & gzipped data
*/
public function gzip($path = null, $level = 9)
{
@ -120,9 +129,9 @@ abstract class Minify
/**
* Minify the data & write it to a CacheItemInterface object.
*
* @param CacheItemInterface $item Cache item to write the data to.
* @param CacheItemInterface $item Cache item to write the data to
*
* @return CacheItemInterface Cache item with the minifier data.
* @return CacheItemInterface Cache item with the minifier data
*/
public function cache(CacheItemInterface $item)
{
@ -135,16 +144,16 @@ abstract class Minify
/**
* Minify the data.
*
* @param string[optional] $path Path to write the data to.
* @param string[optional] $path Path to write the data to
*
* @return string The minified data.
* @return string The minified data
*/
abstract public function execute($path = null);
/**
* Load data.
*
* @param string $data Either a path to a file or the content itself.
* @param string $data Either a path to a file or the content itself
*
* @return string
*/
@ -166,8 +175,8 @@ abstract class Minify
/**
* Save to file.
*
* @param string $content The minified data.
* @param string $path The path to save the minified data to.
* @param string $content The minified data
* @param string $path The path to save the minified data to
*
* @throws IOException
*/
@ -183,8 +192,8 @@ abstract class Minify
/**
* Register a pattern to execute against the source content.
*
* @param string $pattern PCRE pattern.
* @param string|callable $replacement Replacement value for matched pattern.
* @param string $pattern PCRE pattern
* @param string|callable $replacement Replacement value for matched pattern
*/
protected function registerPattern($pattern, $replacement = '')
{
@ -202,9 +211,9 @@ abstract class Minify
* The only way to accurately replace these pieces is to traverse the JS one
* character at a time and try to find whatever starts first.
*
* @param string $content The content to replace patterns in.
* @param string $content The content to replace patterns in
*
* @return string The (manipulated) content.
* @return string The (manipulated) content
*/
protected function replace($content)
{
@ -284,9 +293,9 @@ abstract class Minify
* This function will be called plenty of times, where $content will always
* move up 1 character.
*
* @param string $pattern Pattern to match.
* @param string|callable $replacement Replacement value.
* @param string $content Content to match pattern against.
* @param string $pattern Pattern to match
* @param string|callable $replacement Replacement value
* @param string $content Content to match pattern against
*
* @return string
*/
@ -382,15 +391,15 @@ abstract class Minify
*/
protected function canImportFile($path)
{
return strlen($path) < PHP_MAXPATHLEN && is_file($path) && is_readable($path);
return strlen($path) < PHP_MAXPATHLEN && @is_file($path) && is_readable($path);
}
/**
* Attempts to open file specified by $path for writing.
*
* @param string $path The path to the file.
* @param string $path The path to the file
*
* @return resource Specifier for the target file.
* @return resource Specifier for the target file
*
* @throws IOException
*/
@ -406,9 +415,9 @@ abstract class Minify
/**
* Attempts to write $content to the file specified by $handler. $path is used for printing exceptions.
*
* @param resource $handler The resource to write to.
* @param string $content The content to write.
* @param string $path The path to the file (for exception printing only).
* @param resource $handler The resource to write to
* @param string $content The content to write
* @param string $path The path to the file (for exception printing only)
*
* @throws IOException
*/

View file

@ -17,9 +17,12 @@ http://simplehtmldom.sourceforge.net/
Install
-------
composer.phar require
- package name: "sunra/php-simple-html-dom-parser": "dev-master"
composer.phar
```json
"require": {
"sunra/php-simple-html-dom-parser": "v1.5.0"
}
```
Usage
-----

View file

@ -1,7 +1,4 @@
<?php
// say me who add "О╩©" into start of file?
// Becouse of this 3 symbol before <?php - php get error
// i think it Sublime Text
namespace Sunra\PhpSimple;
@ -9,12 +6,18 @@ require 'simplehtmldom_1_5'.DIRECTORY_SEPARATOR.'simple_html_dom.php';
class HtmlDomParser {
static public function file_get_html() {
return call_user_func_array ( '\file_get_html' , func_get_args() );
}
/**
* @return \simplehtmldom_1_5\simple_html_dom
*/
static public function file_get_html() {
return call_user_func_array ( '\simplehtmldom_1_5\file_get_html' , func_get_args() );
}
// get html dom from string
static public function str_get_html() {
return call_user_func_array ( '\str_get_html' , func_get_args() );
/**
* get html dom from string
* @return \simplehtmldom_1_5\simple_html_dom
*/
static public function str_get_html() {
return call_user_func_array ( '\simplehtmldom_1_5\str_get_html' , func_get_args() );
}
}

View file

@ -1,17 +0,0 @@
K 25
svn:wc:ra_dav:version-url
V 45
/svnroot/simplehtmldom/!svn/ver/179/trunk/app
END
google.htm
K 25
svn:wc:ra_dav:version-url
V 56
/svnroot/simplehtmldom/!svn/ver/179/trunk/app/google.htm
END
index.php
K 25
svn:wc:ra_dav:version-url
V 55
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/index.php
END

View file

@ -1,99 +0,0 @@
10
dir
182
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom/trunk/app
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom
2009-02-23T09:04:02.699587Z
179
me578022
d0e60b4b-9046-0410-940c-b97530268c78
google.htm
file
2010-08-17T19:13:52.500237Z
72a16a066c5a729cd5ddaf6e39082b05
2009-02-23T09:04:02.699587Z
179
me578022
60128
js
dir
index.php
file
2010-08-17T19:13:52.502237Z
3793524c0c846be09274b428d4972b60
2008-12-14T19:02:48.351607Z
176
me578022
4496

View file

@ -1,891 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="ctl00_Head1"><title>
FootballScoresLive - Previous Results
</title><meta name="Keywords" content="football,soccer,score,goals,penalty,penalties,red cards,yellow cards,results,england,
english,scotland,scottish,wales,welsh,europe,european,sms,results by sms" /><meta name="Description" content="FootballScoresLive offers continuous updates of scores from football (soccer)
matches in Britain, Europe, North and South America, and Asia, free direct to your web browser,
and by SMS to your mobile." /><link href="page.css" rel="stylesheet" type="text/css" /><link href="news.css" rel="stylesheet" type="text/css" /><link href="results.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
<script type="text/javascript" src="MMfuncs.js"></script>
<script type="text/javascript" src="swfdetect.js"></script>
<script type="text/vbscript" src="swfver.vbs"></script>
<link rel="shortcut icon" href="/favicon.ico" /><style type="text/css">
.atlas__delta { font-family:Lucida Console; }
</style></head>
<body onload="MM_preloadImages('images/buttons/englishNational_hl.jpg','images/buttons/englishLeagues_hl.jpg',
'images/buttons/futureFixtures_hl.jpg','images/buttons/italianLeagues_hl.jpg','images/buttons/leagueTables_hl.jpg','images/buttons/login_hl.jpg','images/buttons/favourites_hl.jpg','images/buttons/personalise_hl.jpg','images/buttons/previousResults_hl.jpg','images/buttons/scottishLeagues_hl.jpg','images/buttons/seasonTicket_hl.jpg','images/buttons/spanishLeagues_hl.jpg','images/buttons/sponsored_hl.jpg','images/buttons/supermarket_hl.jpg','images/buttons/livescores_hl.jpg')"
onunload="MM_callJS('CheckFlash();')">
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<form name="aspnetForm" method="post" action="MatchResults.aspx" id="aspnetForm">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dB6ayi9LZ+8oLEEG+Bb0EaB7S0yWNAwmwFJYNlmIPIfC1cvZYgBlKWTvoA4O9/nWx6kKCiBPFnSnfWNC5mLsqwKJAqRalzt4zBR7te1bjeJGgN0H2d1aCn3KgK2DLo6jp/xsNAQLvdqugFXdJ+7RvO58WASnJAH4vjnV2vTi6kKfuRGvNvzsfcybchbHQ+T2yUU9pTrLfSRSC6qEw00ANEJLyR8cnnsgTQhOcXFIPwCbFQEljWnQHmV6l+YMt9GeyxuhD7qL+JcVOPkqZ4TROE1TWmVLD8kOwmpEaMwINDlz/veOnNh/HVdabDznCkdFd3yzhpyyx4/mqWqp4GmkbsFyiUvZoKYin/4xf7L1Z0NfMamm3lZZMFpWz8AhmWcL99qa5kcLgjtXMzZvOKn6K/pud0lEVkvl3Kz2jXgzZPxh3qdX4Nx5anjttd6NKyF3wSlfVMk0j8zoZmja8HaqpwZZfSFnn+U7wWO6D9vzZKDJ/nxUbJHqEaLYYz+QD6zWHVfsEi3cZJlit0oOWatl8AjSHKPmFi3oD9jD3K/FiuhYFYkyk07Jpoe/6YvKgeisZaFYDQrqTTVGYul9rQRVRkUc0UVrt7TZJ/d08EXYKhWYRBx2xxQt3Yfbefr45GCComTUGOjml7DVITe9811QIXfgw5GaECa6aBi2hvYSB6gdhFlqrdqi/HK2DTcXFTyN5n749O3MgVJGSQtXP/xsTp3J1t2lOSMlz9hZYwQUDqOpaWZG2Ae8JmzhvdClyw1AxhJolgEGsutAtYhXFc16ihtjYd/JXx47zeBoB8temPCNJwpFmAN3iXV9nhu5RZ6q8hSnpfCBCn756EDnykItEhTStGovLsJG+QdRNsLE56mNtIxFxeAGrwLWJ260+QsRcvimNAERfZtow7Vx/JPMJLfXrvd1G6u0jP/uqJAQPP8WjVUUfAK5yJHi2PzzGTtFDPd7TJenlgzzyzTcPjJKib+W+CRBBboPRnro9659+79nZwYXdbHHDlQiNcBKZfYKohFHSteJRn4/XnUI2MAi+j9a5JfGs7syF7OWjvFCevTrS/toNPaPzM+muJF3/cLQA0kuM/OvaS+9Kj16BCdNfy6mPZMy6pD95xMGomu1adBwKvaTLMmjrt5Kgh5RxGrUf+pl1IoY9u8=" />
<script src="/WebResource.axd?d=OSFApkHgVTFGp_WGnj5w0YyfbDgId8eejj1HHj2udCziBXq1lnucLLMhY2b4ssXravjY6R0n3Xz5xE3pKbfs7VC_WlWODN-9NNOB8qqY6cA1&amp;t=633112977674076250" type="text/javascript"></script>
<script src="/WebResource.axd?d=OSFApkHgVTFGp_WGnj5w0YyfbDgId8eejj1HHj2udCziBXq1lnucLLMhY2b4ssXravjY6R0n3Xz5xE3pKbfs7blAzxonPUmCsga2GgPJUY41&amp;t=633112977674076250" type="text/javascript"></script>
<div>
<table id="Table_01" width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" rowspan="2" width="394" height="111" >
<a href="LiveScores.aspx">
<img src="images/fsl_logo.jpg" width="394" height="111" border="0" alt="FootballScoresLive logo" /></a></td>
<td height="81" width="100%" valign="middle" background="images/grass_top.jpg" align="center">
<a id="ctl00_lnkScores2Mobile" title="Click here for Live Scores to your mobile" href="live-premiership-football-scores-via-sms.aspx" style="display:inline-block;"><img title="Click here for Live Scores to your mobile" src="images/scores2mobile.jpg" border="0" /></a>
</td>
<td width="174" height="81" align="center" valign="middle" background="images/grass_top.jpg">
<a href="Register.aspx"><img src="images/btn_reg.gif" border="0" /></a>
</td>
</tr>
<tr style="color: yellow;">
<td width="237" height="30" align="center" valign="middle" background="images/visitors_bg.jpg" class="body12">
<strong>
For <span style="color: red">FREE</span> goals to your mobile</strong>
<a id="ctl00_HyperLink1" class="navlink" href="fixtures.aspx">Click Here</a></td>
<td align="center" valign="middle" bgcolor="#000000" class="body12">
<table width=100% border="0" cellpadding="0" cellspacing="0">
<tr style="color: white;">
<td>
<input type="submit" name="ctl00$LoginView5$btnLogin" value="LogIn" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$LoginView5$btnLogin&quot;, &quot;&quot;, false, &quot;&quot;, &quot;login.aspx&quot;, false, false))" id="ctl00_LoginView5_btnLogin" />
</td>
<td>&nbsp;
</td>
</tr>
</table>
</td>
</tr>
<!--
<tr>
<td height="16" colspan="4" bgcolor="#000000">
&nbsp;|&nbsp;<a href="default.aspx" class="navlink">Home</a>
&nbsp;|&nbsp;<a href="live-premiership-football-scores-via-sms.aspx" class="navlink">SMS Service</a>
&nbsp;|&nbsp;<a href="LiveScores.aspx" class="navlink">Live Scores</a>
&nbsp;|&nbsp;<a href="MatchResults.aspx" class="navlink">Previous Results</a>
&nbsp;|&nbsp;<a href="fixtures.aspx" class="navlink">Future Fixtures</a>&nbsp;|&nbsp;
<a id="ctl00_LoginStatus2" class="navlink" href="javascript:__doPostBack('ctl00$LoginStatus2$ctl02','')">Login</a>&nbsp;|&nbsp;
<a href="login/personal.aspx" class="navlink">Personalise</a>&nbsp;|&nbsp;
<br />
</td>
</tr>
-->
<tr height="100%">
<td width="174" align="center" valign="top" background="images/grass_left.jpg">
<!--
<a href="#" onclick='window.external.AddFavorite(location.href,document.title);' class="navlink">
<img src="images/favourites.jpg" border="0"/></a>
-->
<br />
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<a href="#" onclick='window.external.AddFavorite(location.href,document.title);' class="navlink">
<img src="images/buttons/favourites.jpg" border="0" alt="Add this page to your favourites" name="fav" width="165" height="21" onmouseover="MM_swapImage('fav','','images/buttons/favourites_hl.jpg',1)" onmouseout="MM_swapImgRestore()" />
</a>
</td>
</tr>
<tr>
<td><img src="images/buttons/seasonTicket.jpg" border="0" alt="Season Ticket Goal Alerts - coming soon" name="season" width="166" height="22" onmouseover="MM_swapImage('season','','images/buttons/seasonTicket_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td><img src="images/buttons/mobile.jpg" border="0" alt="Mobile Goal Alerts" name="mobile" width="166" height="20" /></td>
</tr>
<tr>
<td><a href="live-premiership-football-scores-via-sms.aspx">
<img src="images/buttons/englishLeagues.jpg" alt="English Leagues" name="engLg" width="166" height="19" border="0" onmouseover="MM_swapImage('engLg','','images/buttons/englishLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><img src="images/buttons/englishNational.jpg" border="0" alt="English National Team - coming soon" name="engNat" width="166" height="18" onmouseover="MM_swapImage('engNat','','images/buttons/englishNational_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td>
<a href="live-scottish-premier-league-football-scores-via-sms.aspx">
<img src="images/buttons/scottishLeagues.jpg" border="0" alt="Scottish Leagues" name="scotLg" width="166" height="18" onmouseover="MM_swapImage('scotLg','','images/buttons/scottishLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td>
<a href="live-spain-football-scores-via-sms.aspx">
<img src="images/buttons/spanishLeagues.jpg" border="0" alt="Spanish Leagues" name="spanLg" width="166" height="18" onmouseover="MM_swapImage('spanLg','','images/buttons/spanishLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td>
<a href="live-italy-football-scores-via-sms.aspx">
<img src="images/buttons/italianLeagues.jpg" border="0" alt="Italian Leagues" name="italLg" width="166" height="18" onmouseover="MM_swapImage('italLg','','images/buttons/italianLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><a href="LiveScores.aspx"><img src="images/buttons/livescores.jpg" border="0" alt="Live Scores" name="world" width="166" height="20" onmouseover="MM_swapImage('world','','images/buttons/livescores_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><img src="images/buttons/supermarket.jpg" border="0" alt="Football Supermarket - coming soon" name="super" width="166" height="20" onmouseover="MM_swapImage('super','','images/buttons/supermarket_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td><a href="MatchResults.aspx"><img src="images/buttons/previousResults.jpg" border="0" alt="Previous Results" name="prev" width="166" height="20" onmouseover="MM_swapImage('prev','','images/buttons/previousResults_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><a href="fixtures.aspx"><img src="images/buttons/futureFixtures.jpg" border="0" alt="Future Fixtures" name="future" width="166" height="20" onmouseover="MM_swapImage('future','','images/buttons/futureFixtures_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><img src="images/buttons/leagueTables.jpg" border="0" alt="League Tables - coming soon" name="lgTbl" width="166" height="20" onmouseover="MM_swapImage('lgTbl','','images/buttons/leagueTables_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td><img src="images/buttons/sponsored.jpg" border="0" alt="Sponsored Links - coming soon" name="spons" width="166" height="20" onmouseover="MM_swapImage('spons','','images/buttons/sponsored_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><img src="images/buttons/personalise.jpg" border="0" alt="Personalise" name="pers" width="166" height="20" onmouseover="MM_swapImage('pers','','images/buttons/personalise_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td>
<input id="ctl00_LoginStatus1" type="image" name="ctl00$LoginStatus1$ctl03" class="navlink" src="images/buttons/login.jpg" alt="Login" border="0" />
</tr>
<tr>
<td>
<br />
</td>
</tr>
</table>
<a href="fixtures.aspx">
<img src="images/fsl_phone_static.jpg" width="130" height="238" border="0" />
</a>
<div id="ctl00_FixtureSelectPanel">
<table border="0" cellpadding="0" cellspacing="0">
<tr style="background-color:Black; color:Green">
<td colspan="2">
<img id="ctl00_Image1" src="images/fixtures.jpg" border="0" /></td>
</tr>
<tr style="background-color:White">
<td align="left">
<select name="ctl00$FixtureDropDown" id="ctl00_FixtureDropDown" title="Choose the date you want to see the fixtures" class="body">
<option value="18/12/2008 00:00:00">18/12/2008</option>
<option value="19/12/2008 00:00:00">19/12/2008</option>
<option value="20/12/2008 00:00:00">20/12/2008</option>
<option value="21/12/2008 00:00:00">21/12/2008</option>
<option value="22/12/2008 00:00:00">22/12/2008</option>
<option value="23/12/2008 00:00:00">23/12/2008</option>
<option value="26/12/2008 00:00:00">26/12/2008</option>
<option value="27/12/2008 00:00:00">27/12/2008</option>
<option value="28/12/2008 00:00:00">28/12/2008</option>
<option value="29/12/2008 00:00:00">29/12/2008</option>
<option value="30/12/2008 00:00:00">30/12/2008</option>
<option value="01/01/2009 00:00:00">01/01/2009</option>
<option value="02/01/2009 00:00:00">02/01/2009</option>
</select>
</td>
<td align="right">
<input type="image" name="ctl00$FixtureButton" id="ctl00_FixtureButton" title="Click to see the fixtures on your chosen date" src="images/go.gif" align="absmiddle" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$FixtureButton&quot;, &quot;&quot;, false, &quot;&quot;, &quot;fixtures.aspx&quot;, false, false))" border="0" />
</td>
</tr>
</table>
</div>
<br />
<div style="text-align: center">
<table border="0" cellpadding="2" cellspacing="0">
<tr>
<td>
<a href="live-premiership-football-scores-via-sms.aspx">
<img src="images/flags2/england.jpg" border="0" alt="English Leagues goal alerts by SMS" /></a></td>
<td>
<a href="live-scottish-premier-league-football-scores-via-sms.aspx">
<img src="images/flags2/scotland.jpg" border="0" alt="Scottish Leagues goal alerts by SMS" /></a></td>
<td>
<a href="live-spain-football-scores-via-sms.aspx">
<img src="images/flags2/Spain.jpg" border="0" alt="Spanish Leagues goal alerts by SMS" /></a></td>
<td>
<a href="live-italy-football-scores-via-sms.aspx">
<img src="images/flags2/Italy.jpg" border="0" alt="Italian Leagues goal alerts by SMS" /></a></td>
</tr>
</table>
</div>
<br />
<img src="images/status.gif" width="110" height="127" /><br />
<br />
<img src="images/events.gif" width="110" height="115" /><br />
</td>
<td width="100%" colspan="2" align="center" valign="top">
<div id="ctl00_ContentPlaceHolder1_UpdatePanel1">
<h1>Historical Football Archive - Updated Daily!</h1>
<br />
<p class="body12">Missed the details of your football club's latest performance?
Whether you support Manchester United or Cambridge United, Premiership club or Conference club,
you will find it all here, with our fantastic soccer library of results over the last two weeks.
These pages contain the history & detailed results package for every football game from around the world
from the last 14 match days, including not only every goal scored, but, game results, names of goal scorer,
match results, red cards and plenty more! This service is automatically updated every 24 hours,
simply select a date from the drop down menu :-
</p>
<select name="ctl00$ContentPlaceHolder1$DropDownList1" id="ctl00_ContentPlaceHolder1_DropDownList1">
<option selected="selected" value="17/12/2008 00:00:00">Wed 17/12/2008</option>
<option value="16/12/2008 00:00:00">Tue 16/12/2008</option>
<option value="15/12/2008 00:00:00">Mon 15/12/2008</option>
<option value="14/12/2008 00:00:00">Sun 14/12/2008</option>
<option value="13/12/2008 00:00:00">Sat 13/12/2008</option>
<option value="12/12/2008 00:00:00">Fri 12/12/2008</option>
<option value="11/12/2008 00:00:00">Thu 11/12/2008</option>
<option value="10/12/2008 00:00:00">Wed 10/12/2008</option>
<option value="09/12/2008 00:00:00">Tue 09/12/2008</option>
<option value="08/12/2008 00:00:00">Mon 08/12/2008</option>
<option value="07/12/2008 00:00:00">Sun 07/12/2008</option>
<option value="06/12/2008 00:00:00">Sat 06/12/2008</option>
<option value="05/12/2008 00:00:00">Fri 05/12/2008</option>
<option value="04/12/2008 00:00:00">Thu 04/12/2008</option>
</select>
<br /><br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl00_CompGames1_lblCompName">&nbsp;SCOTLAND - DIVISION 2</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl00_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
19:45
</td><td>Pst </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">STRANRAER</td><td align="right">0</td><td align="left">0</td><td align="left">PETERHEAD</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
&nbsp;
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_CompGames1_lblCompName">&nbsp;ENGLAND - FA TROPHY - FIRST ROUND</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">SWINDON SUPERMARINE</td><td align="right">1</td><td align="left">0</td><td align="left">EASTBOURNE BOROUGH</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Replayed if draw.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>EDENBOROUGH</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">74<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">EDENBOROUGH</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl02_CompGames1_lblCompName">&nbsp;EUROPE (UEFA) - UEFA CUP - GROUP STAGE</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl02_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">AC MILAN</td><td align="right">2</td><td align="left">2</td><td align="left">VfL WOLFSBURG</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>17</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>AMBROSINI</td></tr><tr><td>56</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>PATO</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>55</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ZACCARDO</td></tr><tr><td>81</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SAGLIK</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">81<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">SAGLIK</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td bgcolor="Red">
1
</td><td>
&nbsp;
</td><td align="right">AJAX</td><td align="right">2</td><td align="left">2</td><td align="left">SLAVIA PRAHA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>4</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>VERTONGHEN</td></tr><tr><td>90</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball-pen.gif\' alt=\'penalty\'></td><td nowrap=nowrap>SUAREZ</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>13</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>CERNY</td></tr><tr><td>41</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>JAROLIM</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">90<img align="top" width="17" height="16" border="0" src="images/ball-pen.gif" alt="penalty">SUAREZ</a>
</td>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">CLUB BRUGGE</td><td align="right">0</td><td align="left">1</td><td align="left">FC COPENHAGEN</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>58</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SANTIN</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">58<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">SANTIN</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">DEP. LA CORUNA</td><td align="right">1</td><td align="left">0</td><td align="left">NANCY</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BODIPO</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">74<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">BODIPO</a>
</td>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">FEYENOORD</td><td align="right">0</td><td align="left">1</td><td align="left">LECH POZNAN</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>26</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>DJURDJEVIC</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">26<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">DJURDJEVIC</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">HAMBURGER SV</td><td align="right">3</td><td align="left">1</td><td align="left">ASTON VILLA</td><td bgcolor="Red">
1
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>18</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>PETRIC</td></tr><tr><td>30</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>OLIC</td></tr><tr><td>57</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>OLIC</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>82</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>DELFOUNESO</td></tr><tr><td>84</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/redcard.gif\' alt=\'red card\'></td><td nowrap=nowrap>SIDWELL</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">84<img align="top" width="17" height="16" border="0" src="images/redcard.gif" alt="red card">SIDWELL</a>
</td>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">PORTSMOUTH</td><td align="right">3</td><td align="left">0</td><td align="left">HEERENVEEN</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>40</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>CROUCH</td></tr><tr><td>42</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>CROUCH</td></tr><tr><td>90</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>HREIDARSSON</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">90<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">HREIDARSSON</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">ST ETIENNE</td><td align="right">2</td><td align="left">2</td><td align="left">VALENCIA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>29</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ILAN</td></tr><tr><td>44</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ILAN</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>33</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>MORIENTES</td></tr><tr><td>72</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ZIGIC</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">72<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">ZIGIC</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl03_CompGames1_lblCompName">&nbsp;INTERNATIONAL TOURNAMENTS - OMAN FOUR NATIONS TOUR</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl03_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
14:00
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">OMAN</td><td align="right">3</td><td align="left">1</td><td align="left">CHINA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>47</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BASHEER</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SALEH</td></tr><tr><td>84</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SALEH</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>53</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BO</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">84<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">SALEH</a>
</td>
</tr><tr class="row_alt">
<td>
16:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">ECUADOR</td><td align="right">1</td><td align="left">0</td><td align="left">IRAN</td><td bgcolor="Red">
1
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>55</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>MARTINEZ</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>90</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/redcard.gif\' alt=\'red card\'></td><td nowrap=nowrap>NEJAD</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">90<img align="top" width="17" height="16" border="0" src="images/redcard.gif" alt="red card">NEJAD</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl04_CompGames1_lblCompName">&nbsp;ITALY - FA CUP - ROUND 16</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl04_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
16:00
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">FIORENTINA</td><td align="right">0</td><td align="left">1</td><td align="left">TORINO</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>19</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BIANCHI</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">19<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">BIANCHI</a>
</td>
</tr><tr class="row_alt">
<td>
20:00
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">ROMA</td><td align="right">2</td><td align="left">0</td><td align="left">BOLOGNA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>82</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>VUCINIC</td></tr><tr><td>86</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>VUCINIC</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">86<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">VUCINIC</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl05_CompGames1_lblCompName">&nbsp;ITALY - SERIE C1A</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl05_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
13:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">PRO SESTO</td><td align="right">0</td><td align="left">0</td><td align="left">LECCO</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
&nbsp;
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl06_CompGames1_lblCompName">&nbsp;ITALY - SERIE C2A</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl06_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
13:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">MEZZOCORONA</td><td align="right">1</td><td align="left">3</td><td align="left">SAMBONIFACESE</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>55</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>48</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr><tr><td>66</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">74<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">&nbsp;</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl07_CompGames1_lblCompName">&nbsp;SCOTLAND - FA CUP - THIRD ROUND</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl07_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
13:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">LOCHEE UTD</td><td align="right">1</td><td align="left">1</td><td align="left">AYR UTD</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Replayed if draw.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>86</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>HAGAN</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>60</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>WILLIAMS</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">86<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">HAGAN</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl08_CompGames1_lblCompName">&nbsp;WORLD (FIFA) - FIFA CLUB WORLD CHAMPIONSHIP - SEMI</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl08_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
10:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">PACHUCA (MEX)</td><td align="right">0</td><td align="left">2</td><td align="left">LIGA D.U. QUITO(ECU)</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Playing at Tokyo, Japan. Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>4</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BIELER</td></tr><tr><td>26</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BOLANOS</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">26<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">BOLANOS</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
</div>
<table border="0" cellpadding="5" cellspacing="0" style="width: 100%; height: 100%">
<tr class="newslinkspace">
<td style="width: 100%">
View complete <a href="ResultsArchive.aspx" class="newslink">archive of FootballScoresLive.com Match Results</a>
</td>
</tr>
</table>
</td>
<td width="125" align="right" valign="top">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="120" height="600">
<param name="movie" value="http://www.footballscoreslive.com/images/fslSMSNew.swf" />
<param name="quality" value="high" />
<embed src="http://www.footballscoreslive.com/images/fslSMSNew.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="120" height="600"></embed>
</object>
<script type="text/javascript"><!--
google_ad_client = "pub-1398285862595543";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
<tr>
<td>
<img src="images/spacer.gif" width="174" height="1" alt="" /></td>
<td>
<img src="images/spacer.gif" width="220" height="1" alt="" /></td>
<td>
<img src="images/spacer.gif" width="281" height="1" alt="" /></td>
<td>
<img src="images/spacer.gif" width="125" height="1" alt="" /></td>
</tr>
<tr>
<td height="16" colspan="4" bgcolor="#000000">
&nbsp;|&nbsp;
<a class="navlink" href="disclaimer.aspx">Disclaimer</a>&nbsp;|&nbsp;
<a class="navlink" href="privacy.aspx">Privacy</a>&nbsp;|&nbsp;
<a href="aboutus.aspx" class="navlink">About Us</a>&nbsp;|&nbsp;
<a href="NewsArchive.aspx" class="navlink">News Archive</a>&nbsp;|&nbsp;
</td>
</tr>
</table>
</div>
<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="Xh65BZM36Ruds-iXM2l7LB-dXtc__8RpYzxQLE4V_YQ1" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="2ybQ+H9cPYUzPPi/5ComPVhU+jAYPdxVR+fOu2ZZbs2RxuAweOrbEg/qP5f+1OYLQI+oQJb98YQDTTMw+x86m7Np3/NYQHDjzX76RjJfW9nS6SnJVUi1nLHSh9c7wgfVB7UNjywCsU0hiMY1IUsYkR/rClTQE4j3Q4a4ub3Cqrn+b7fY3itatSObxb3L0Pq9E9vx/RpYI3jhA2RPCnO1WEQF2kEBAba5qqLwESWolSSdLqs5DRta8kholg0zw5EA5/R9+XiPqWwbk4n/TnTtdMwQq2iExD4eyjsLsE7bWnw=" />
<script type="text/xml-script">
<page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
<components>
<pageRequestManager id="_PageRequestManager" updatePanelIDs="ctl00$ContentPlaceHolder1$UpdatePanel1" asyncPostbackControlIDs="ctl00_ContentPlaceHolder1_DropDownList1" scriptManagerID="ctl00$ContentPlaceHolder1$ScriptManager1" form="aspnetForm" />
</components>
</page></script>
<script type="text/javascript">
</script>
</form>
</body>
</html>

View file

@ -1,144 +0,0 @@
<?php
error_reporting(E_ALL);
include_once('../simple_html_dom.php');
$html = file_get_html('google.htm');
//$html = file_get_html('youtube.htm');
//$html = file_get_html('Product.ibatis.xml');
$lang = '';
$l=$html->find('html', 0);
if ($l!==null)
$lang = $l->lang;
if ($lang!='')
$lang = 'lang="'.$lang.'"';
$charset = $html->find('meta[http-equiv*=content-type]', 0);
$target = array();
$query = '';
if (isset($_REQUEST['query'])) {
$query = $_REQUEST['query'];
$target = $html->find($query);
}
function stat_dom($dom) {
$count_text = 0;
$count_comm = 0;
$count_elem = 0;
$count_tag_end = 0;
$count_unknown = 0;
foreach($dom->nodes as $n) {
if ($n->nodetype==HDOM_TYPE_TEXT)
++$count_text;
if ($n->nodetype==HDOM_TYPE_COMMENT)
++$count_comm;
if ($n->nodetype==HDOM_TYPE_ELEMENT)
++$count_elem;
if ($n->nodetype==HDOM_TYPE_ENDTAG)
++$count_tag_end;
if ($n->nodetype==HDOM_TYPE_UNKNOWN)
++$count_unknown;
}
echo 'Total: '. count($dom->nodes).
', Text: '.$count_text.
', Commnet: '.$count_comm.
', Tag: '.$count_elem.
', End Tag: '.$count_tag_end.
', Unknown: '.$count_unknown;
}
function dump_my_html_tree($node, $show_attr=true, $deep=0, $last=true) {
$count = count($node->nodes);
if ($count>0) {
if($last)
echo '<li class="expandable lastExpandable"><div class="hitarea expandable-hitarea lastExpandable-hitarea"></div>&lt;<span class="tag">'.htmlspecialchars($node->tag).'</span>';
else
echo '<li class="expandable"><div class="hitarea expandable-hitarea"></div>&lt;<span class="tag">'.htmlspecialchars($node->tag).'</span>';
}
else {
$laststr = ($last===false) ? '' : ' class="last"';
echo '<li'.$laststr.'>&lt;<span class="tag">'.htmlspecialchars($node->tag).'</span>';
}
if ($show_attr) {
foreach($node->attr as $k=>$v) {
echo ' '.htmlspecialchars($k).'="<span class="attr">'.htmlspecialchars($node->$k).'</span>"';
}
}
echo '&gt;';
if ($node->tag==='text' || $node->tag==='comment') {
echo htmlspecialchars($node->innertext);
return;
}
if ($count>0) echo "\n<ul style=\"display: none;\">\n";
$i=0;
foreach($node->nodes as $c) {
$last = (++$i==$count) ? true : false;
dump_my_html_tree($c, $show_attr, $deep+1, $last);
}
if ($count>0)
echo "</ul>\n";
//if ($count>0) echo '&lt;/<span class="attr">'.htmlspecialchars($node->tag).'</span>&gt;';
echo "</li>\n";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html <?=$lang?>>
<head>
<?
if ($lang!='')
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8"/>';
else if ($charset)
echo $charset;
else
echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>';
?>
<title>Simple HTML DOM Query Test</title>
<link rel="stylesheet" href="js/jquery.treeview.css" />
<link rel="stylesheet" href="js/screen.css" />
<style>
.tag { color: blue; }
.attr { color: #990033; }
</style>
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#html_tree").treeview({
control:"#sidetreecontrol",
collapsed: true,
prerendered: true
});
});
</script>
</head>
<body>
<div id="main">
<h4>Simple HTML DOM Test</h4>
<form name="form1" method="post" action="">
find: <input name="query" type="text" size="60" maxlength="60" value="<?=htmlspecialchars($query)?>">
<input type="submit" name="Submit" value="Go">
</form>
<br>
HTML STAT (<?stat_dom($html);?>)<br>
<br>
<div id="sidetreecontrol"><a href="?#">Collapse All</a> | <a href="?#">Expand All</a></div><br>
<ul class="treeview" id="html_tree">
<?
ob_start();
foreach($target as $e)
dump_my_html_tree($e, true);
ob_end_flush();
?>
</ul>
</div>
</body></html>

View file

@ -1,891 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="ctl00_Head1"><title>
FootballScoresLive - Previous Results
</title><meta name="Keywords" content="football,soccer,score,goals,penalty,penalties,red cards,yellow cards,results,england,
english,scotland,scottish,wales,welsh,europe,european,sms,results by sms" /><meta name="Description" content="FootballScoresLive offers continuous updates of scores from football (soccer)
matches in Britain, Europe, North and South America, and Asia, free direct to your web browser,
and by SMS to your mobile." /><link href="page.css" rel="stylesheet" type="text/css" /><link href="news.css" rel="stylesheet" type="text/css" /><link href="results.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
<script type="text/javascript" src="MMfuncs.js"></script>
<script type="text/javascript" src="swfdetect.js"></script>
<script type="text/vbscript" src="swfver.vbs"></script>
<link rel="shortcut icon" href="/favicon.ico" /><style type="text/css">
.atlas__delta { font-family:Lucida Console; }
</style></head>
<body onload="MM_preloadImages('images/buttons/englishNational_hl.jpg','images/buttons/englishLeagues_hl.jpg',
'images/buttons/futureFixtures_hl.jpg','images/buttons/italianLeagues_hl.jpg','images/buttons/leagueTables_hl.jpg','images/buttons/login_hl.jpg','images/buttons/favourites_hl.jpg','images/buttons/personalise_hl.jpg','images/buttons/previousResults_hl.jpg','images/buttons/scottishLeagues_hl.jpg','images/buttons/seasonTicket_hl.jpg','images/buttons/spanishLeagues_hl.jpg','images/buttons/sponsored_hl.jpg','images/buttons/supermarket_hl.jpg','images/buttons/livescores_hl.jpg')"
onunload="MM_callJS('CheckFlash();')">
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<form name="aspnetForm" method="post" action="MatchResults.aspx" id="aspnetForm">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dB6ayi9LZ+8oLEEG+Bb0EaB7S0yWNAwmwFJYNlmIPIfC1cvZYgBlKWTvoA4O9/nWx6kKCiBPFnSnfWNC5mLsqwKJAqRalzt4zBR7te1bjeJGgN0H2d1aCn3KgK2DLo6jp/xsNAQLvdqugFXdJ+7RvO58WASnJAH4vjnV2vTi6kKfuRGvNvzsfcybchbHQ+T2yUU9pTrLfSRSC6qEw00ANEJLyR8cnnsgTQhOcXFIPwCbFQEljWnQHmV6l+YMt9GeyxuhD7qL+JcVOPkqZ4TROE1TWmVLD8kOwmpEaMwINDlz/veOnNh/HVdabDznCkdFd3yzhpyyx4/mqWqp4GmkbsFyiUvZoKYin/4xf7L1Z0NfMamm3lZZMFpWz8AhmWcL99qa5kcLgjtXMzZvOKn6K/pud0lEVkvl3Kz2jXgzZPxh3qdX4Nx5anjttd6NKyF3wSlfVMk0j8zoZmja8HaqpwZZfSFnn+U7wWO6D9vzZKDJ/nxUbJHqEaLYYz+QD6zWHVfsEi3cZJlit0oOWatl8AjSHKPmFi3oD9jD3K/FiuhYFYkyk07Jpoe/6YvKgeisZaFYDQrqTTVGYul9rQRVRkUc0UVrt7TZJ/d08EXYKhWYRBx2xxQt3Yfbefr45GCComTUGOjml7DVITe9811QIXfgw5GaECa6aBi2hvYSB6gdhFlqrdqi/HK2DTcXFTyN5n749O3MgVJGSQtXP/xsTp3J1t2lOSMlz9hZYwQUDqOpaWZG2Ae8JmzhvdClyw1AxhJolgEGsutAtYhXFc16ihtjYd/JXx47zeBoB8temPCNJwpFmAN3iXV9nhu5RZ6q8hSnpfCBCn756EDnykItEhTStGovLsJG+QdRNsLE56mNtIxFxeAGrwLWJ260+QsRcvimNAERfZtow7Vx/JPMJLfXrvd1G6u0jP/uqJAQPP8WjVUUfAK5yJHi2PzzGTtFDPd7TJenlgzzyzTcPjJKib+W+CRBBboPRnro9659+79nZwYXdbHHDlQiNcBKZfYKohFHSteJRn4/XnUI2MAi+j9a5JfGs7syF7OWjvFCevTrS/toNPaPzM+muJF3/cLQA0kuM/OvaS+9Kj16BCdNfy6mPZMy6pD95xMGomu1adBwKvaTLMmjrt5Kgh5RxGrUf+pl1IoY9u8=" />
<script src="/WebResource.axd?d=OSFApkHgVTFGp_WGnj5w0YyfbDgId8eejj1HHj2udCziBXq1lnucLLMhY2b4ssXravjY6R0n3Xz5xE3pKbfs7VC_WlWODN-9NNOB8qqY6cA1&amp;t=633112977674076250" type="text/javascript"></script>
<script src="/WebResource.axd?d=OSFApkHgVTFGp_WGnj5w0YyfbDgId8eejj1HHj2udCziBXq1lnucLLMhY2b4ssXravjY6R0n3Xz5xE3pKbfs7blAzxonPUmCsga2GgPJUY41&amp;t=633112977674076250" type="text/javascript"></script>
<div>
<table id="Table_01" width="100%" height="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2" rowspan="2" width="394" height="111" >
<a href="LiveScores.aspx">
<img src="images/fsl_logo.jpg" width="394" height="111" border="0" alt="FootballScoresLive logo" /></a></td>
<td height="81" width="100%" valign="middle" background="images/grass_top.jpg" align="center">
<a id="ctl00_lnkScores2Mobile" title="Click here for Live Scores to your mobile" href="live-premiership-football-scores-via-sms.aspx" style="display:inline-block;"><img title="Click here for Live Scores to your mobile" src="images/scores2mobile.jpg" border="0" /></a>
</td>
<td width="174" height="81" align="center" valign="middle" background="images/grass_top.jpg">
<a href="Register.aspx"><img src="images/btn_reg.gif" border="0" /></a>
</td>
</tr>
<tr style="color: yellow;">
<td width="237" height="30" align="center" valign="middle" background="images/visitors_bg.jpg" class="body12">
<strong>
For <span style="color: red">FREE</span> goals to your mobile</strong>
<a id="ctl00_HyperLink1" class="navlink" href="fixtures.aspx">Click Here</a></td>
<td align="center" valign="middle" bgcolor="#000000" class="body12">
<table width=100% border="0" cellpadding="0" cellspacing="0">
<tr style="color: white;">
<td>
<input type="submit" name="ctl00$LoginView5$btnLogin" value="LogIn" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$LoginView5$btnLogin&quot;, &quot;&quot;, false, &quot;&quot;, &quot;login.aspx&quot;, false, false))" id="ctl00_LoginView5_btnLogin" />
</td>
<td>&nbsp;
</td>
</tr>
</table>
</td>
</tr>
<!--
<tr>
<td height="16" colspan="4" bgcolor="#000000">
&nbsp;|&nbsp;<a href="default.aspx" class="navlink">Home</a>
&nbsp;|&nbsp;<a href="live-premiership-football-scores-via-sms.aspx" class="navlink">SMS Service</a>
&nbsp;|&nbsp;<a href="LiveScores.aspx" class="navlink">Live Scores</a>
&nbsp;|&nbsp;<a href="MatchResults.aspx" class="navlink">Previous Results</a>
&nbsp;|&nbsp;<a href="fixtures.aspx" class="navlink">Future Fixtures</a>&nbsp;|&nbsp;
<a id="ctl00_LoginStatus2" class="navlink" href="javascript:__doPostBack('ctl00$LoginStatus2$ctl02','')">Login</a>&nbsp;|&nbsp;
<a href="login/personal.aspx" class="navlink">Personalise</a>&nbsp;|&nbsp;
<br />
</td>
</tr>
-->
<tr height="100%">
<td width="174" align="center" valign="top" background="images/grass_left.jpg">
<!--
<a href="#" onclick='window.external.AddFavorite(location.href,document.title);' class="navlink">
<img src="images/favourites.jpg" border="0"/></a>
-->
<br />
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<a href="#" onclick='window.external.AddFavorite(location.href,document.title);' class="navlink">
<img src="images/buttons/favourites.jpg" border="0" alt="Add this page to your favourites" name="fav" width="165" height="21" onmouseover="MM_swapImage('fav','','images/buttons/favourites_hl.jpg',1)" onmouseout="MM_swapImgRestore()" />
</a>
</td>
</tr>
<tr>
<td><img src="images/buttons/seasonTicket.jpg" border="0" alt="Season Ticket Goal Alerts - coming soon" name="season" width="166" height="22" onmouseover="MM_swapImage('season','','images/buttons/seasonTicket_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td><img src="images/buttons/mobile.jpg" border="0" alt="Mobile Goal Alerts" name="mobile" width="166" height="20" /></td>
</tr>
<tr>
<td><a href="live-premiership-football-scores-via-sms.aspx">
<img src="images/buttons/englishLeagues.jpg" alt="English Leagues" name="engLg" width="166" height="19" border="0" onmouseover="MM_swapImage('engLg','','images/buttons/englishLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><img src="images/buttons/englishNational.jpg" border="0" alt="English National Team - coming soon" name="engNat" width="166" height="18" onmouseover="MM_swapImage('engNat','','images/buttons/englishNational_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td>
<a href="live-scottish-premier-league-football-scores-via-sms.aspx">
<img src="images/buttons/scottishLeagues.jpg" border="0" alt="Scottish Leagues" name="scotLg" width="166" height="18" onmouseover="MM_swapImage('scotLg','','images/buttons/scottishLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td>
<a href="live-spain-football-scores-via-sms.aspx">
<img src="images/buttons/spanishLeagues.jpg" border="0" alt="Spanish Leagues" name="spanLg" width="166" height="18" onmouseover="MM_swapImage('spanLg','','images/buttons/spanishLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td>
<a href="live-italy-football-scores-via-sms.aspx">
<img src="images/buttons/italianLeagues.jpg" border="0" alt="Italian Leagues" name="italLg" width="166" height="18" onmouseover="MM_swapImage('italLg','','images/buttons/italianLeagues_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><a href="LiveScores.aspx"><img src="images/buttons/livescores.jpg" border="0" alt="Live Scores" name="world" width="166" height="20" onmouseover="MM_swapImage('world','','images/buttons/livescores_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><img src="images/buttons/supermarket.jpg" border="0" alt="Football Supermarket - coming soon" name="super" width="166" height="20" onmouseover="MM_swapImage('super','','images/buttons/supermarket_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td><a href="MatchResults.aspx"><img src="images/buttons/previousResults.jpg" border="0" alt="Previous Results" name="prev" width="166" height="20" onmouseover="MM_swapImage('prev','','images/buttons/previousResults_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><a href="fixtures.aspx"><img src="images/buttons/futureFixtures.jpg" border="0" alt="Future Fixtures" name="future" width="166" height="20" onmouseover="MM_swapImage('future','','images/buttons/futureFixtures_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></a></td>
</tr>
<tr>
<td><img src="images/buttons/leagueTables.jpg" border="0" alt="League Tables - coming soon" name="lgTbl" width="166" height="20" onmouseover="MM_swapImage('lgTbl','','images/buttons/leagueTables_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td><img src="images/buttons/sponsored.jpg" border="0" alt="Sponsored Links - coming soon" name="spons" width="166" height="20" onmouseover="MM_swapImage('spons','','images/buttons/sponsored_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td><img src="images/buttons/personalise.jpg" border="0" alt="Personalise" name="pers" width="166" height="20" onmouseover="MM_swapImage('pers','','images/buttons/personalise_hl.jpg',1)" onmouseout="MM_swapImgRestore()" /></td>
</tr>
<tr>
<td>
<input id="ctl00_LoginStatus1" type="image" name="ctl00$LoginStatus1$ctl03" class="navlink" src="images/buttons/login.jpg" alt="Login" border="0" />
</tr>
<tr>
<td>
<br />
</td>
</tr>
</table>
<a href="fixtures.aspx">
<img src="images/fsl_phone_static.jpg" width="130" height="238" border="0" />
</a>
<div id="ctl00_FixtureSelectPanel">
<table border="0" cellpadding="0" cellspacing="0">
<tr style="background-color:Black; color:Green">
<td colspan="2">
<img id="ctl00_Image1" src="images/fixtures.jpg" border="0" /></td>
</tr>
<tr style="background-color:White">
<td align="left">
<select name="ctl00$FixtureDropDown" id="ctl00_FixtureDropDown" title="Choose the date you want to see the fixtures" class="body">
<option value="18/12/2008 00:00:00">18/12/2008</option>
<option value="19/12/2008 00:00:00">19/12/2008</option>
<option value="20/12/2008 00:00:00">20/12/2008</option>
<option value="21/12/2008 00:00:00">21/12/2008</option>
<option value="22/12/2008 00:00:00">22/12/2008</option>
<option value="23/12/2008 00:00:00">23/12/2008</option>
<option value="26/12/2008 00:00:00">26/12/2008</option>
<option value="27/12/2008 00:00:00">27/12/2008</option>
<option value="28/12/2008 00:00:00">28/12/2008</option>
<option value="29/12/2008 00:00:00">29/12/2008</option>
<option value="30/12/2008 00:00:00">30/12/2008</option>
<option value="01/01/2009 00:00:00">01/01/2009</option>
<option value="02/01/2009 00:00:00">02/01/2009</option>
</select>
</td>
<td align="right">
<input type="image" name="ctl00$FixtureButton" id="ctl00_FixtureButton" title="Click to see the fixtures on your chosen date" src="images/go.gif" align="absmiddle" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$FixtureButton&quot;, &quot;&quot;, false, &quot;&quot;, &quot;fixtures.aspx&quot;, false, false))" border="0" />
</td>
</tr>
</table>
</div>
<br />
<div style="text-align: center">
<table border="0" cellpadding="2" cellspacing="0">
<tr>
<td>
<a href="live-premiership-football-scores-via-sms.aspx">
<img src="images/flags2/england.jpg" border="0" alt="English Leagues goal alerts by SMS" /></a></td>
<td>
<a href="live-scottish-premier-league-football-scores-via-sms.aspx">
<img src="images/flags2/scotland.jpg" border="0" alt="Scottish Leagues goal alerts by SMS" /></a></td>
<td>
<a href="live-spain-football-scores-via-sms.aspx">
<img src="images/flags2/Spain.jpg" border="0" alt="Spanish Leagues goal alerts by SMS" /></a></td>
<td>
<a href="live-italy-football-scores-via-sms.aspx">
<img src="images/flags2/Italy.jpg" border="0" alt="Italian Leagues goal alerts by SMS" /></a></td>
</tr>
</table>
</div>
<br />
<img src="images/status.gif" width="110" height="127" /><br />
<br />
<img src="images/events.gif" width="110" height="115" /><br />
</td>
<td width="100%" colspan="2" align="center" valign="top">
<div id="ctl00_ContentPlaceHolder1_UpdatePanel1">
<h1>Historical Football Archive - Updated Daily!</h1>
<br />
<p class="body12">Missed the details of your football club's latest performance?
Whether you support Manchester United or Cambridge United, Premiership club or Conference club,
you will find it all here, with our fantastic soccer library of results over the last two weeks.
These pages contain the history & detailed results package for every football game from around the world
from the last 14 match days, including not only every goal scored, but, game results, names of goal scorer,
match results, red cards and plenty more! This service is automatically updated every 24 hours,
simply select a date from the drop down menu :-
</p>
<select name="ctl00$ContentPlaceHolder1$DropDownList1" id="ctl00_ContentPlaceHolder1_DropDownList1">
<option selected="selected" value="17/12/2008 00:00:00">Wed 17/12/2008</option>
<option value="16/12/2008 00:00:00">Tue 16/12/2008</option>
<option value="15/12/2008 00:00:00">Mon 15/12/2008</option>
<option value="14/12/2008 00:00:00">Sun 14/12/2008</option>
<option value="13/12/2008 00:00:00">Sat 13/12/2008</option>
<option value="12/12/2008 00:00:00">Fri 12/12/2008</option>
<option value="11/12/2008 00:00:00">Thu 11/12/2008</option>
<option value="10/12/2008 00:00:00">Wed 10/12/2008</option>
<option value="09/12/2008 00:00:00">Tue 09/12/2008</option>
<option value="08/12/2008 00:00:00">Mon 08/12/2008</option>
<option value="07/12/2008 00:00:00">Sun 07/12/2008</option>
<option value="06/12/2008 00:00:00">Sat 06/12/2008</option>
<option value="05/12/2008 00:00:00">Fri 05/12/2008</option>
<option value="04/12/2008 00:00:00">Thu 04/12/2008</option>
</select>
<br /><br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl00_CompGames1_lblCompName">&nbsp;SCOTLAND - DIVISION 2</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl00_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
19:45
</td><td>Pst </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">STRANRAER</td><td align="right">0</td><td align="left">0</td><td align="left">PETERHEAD</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
&nbsp;
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_CompGames1_lblCompName">&nbsp;ENGLAND - FA TROPHY - FIRST ROUND</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl01_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">SWINDON SUPERMARINE</td><td align="right">1</td><td align="left">0</td><td align="left">EASTBOURNE BOROUGH</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Replayed if draw.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>EDENBOROUGH</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">74<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">EDENBOROUGH</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl02_CompGames1_lblCompName">&nbsp;EUROPE (UEFA) - UEFA CUP - GROUP STAGE</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl02_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">AC MILAN</td><td align="right">2</td><td align="left">2</td><td align="left">VfL WOLFSBURG</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>17</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>AMBROSINI</td></tr><tr><td>56</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>PATO</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>55</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ZACCARDO</td></tr><tr><td>81</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SAGLIK</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">81<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">SAGLIK</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td bgcolor="Red">
1
</td><td>
&nbsp;
</td><td align="right">AJAX</td><td align="right">2</td><td align="left">2</td><td align="left">SLAVIA PRAHA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>4</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>VERTONGHEN</td></tr><tr><td>90</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball-pen.gif\' alt=\'penalty\'></td><td nowrap=nowrap>SUAREZ</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>13</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>CERNY</td></tr><tr><td>41</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>JAROLIM</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">90<img align="top" width="17" height="16" border="0" src="images/ball-pen.gif" alt="penalty">SUAREZ</a>
</td>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">CLUB BRUGGE</td><td align="right">0</td><td align="left">1</td><td align="left">FC COPENHAGEN</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>58</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SANTIN</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">58<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">SANTIN</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">DEP. LA CORUNA</td><td align="right">1</td><td align="left">0</td><td align="left">NANCY</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BODIPO</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">74<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">BODIPO</a>
</td>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">FEYENOORD</td><td align="right">0</td><td align="left">1</td><td align="left">LECH POZNAN</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>26</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>DJURDJEVIC</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">26<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">DJURDJEVIC</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">HAMBURGER SV</td><td align="right">3</td><td align="left">1</td><td align="left">ASTON VILLA</td><td bgcolor="Red">
1
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>18</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>PETRIC</td></tr><tr><td>30</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>OLIC</td></tr><tr><td>57</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>OLIC</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>82</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>DELFOUNESO</td></tr><tr><td>84</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/redcard.gif\' alt=\'red card\'></td><td nowrap=nowrap>SIDWELL</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">84<img align="top" width="17" height="16" border="0" src="images/redcard.gif" alt="red card">SIDWELL</a>
</td>
</tr><tr class="row">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">PORTSMOUTH</td><td align="right">3</td><td align="left">0</td><td align="left">HEERENVEEN</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>40</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>CROUCH</td></tr><tr><td>42</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>CROUCH</td></tr><tr><td>90</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>HREIDARSSON</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">90<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">HREIDARSSON</a>
</td>
</tr><tr class="row_alt">
<td>
19:45
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">ST ETIENNE</td><td align="right">2</td><td align="left">2</td><td align="left">VALENCIA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>29</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ILAN</td></tr><tr><td>44</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ILAN</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>33</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>MORIENTES</td></tr><tr><td>72</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>ZIGIC</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">72<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">ZIGIC</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl03_CompGames1_lblCompName">&nbsp;INTERNATIONAL TOURNAMENTS - OMAN FOUR NATIONS TOUR</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl03_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
14:00
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">OMAN</td><td align="right">3</td><td align="left">1</td><td align="left">CHINA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>47</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BASHEER</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SALEH</td></tr><tr><td>84</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>SALEH</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>53</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BO</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">84<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">SALEH</a>
</td>
</tr><tr class="row_alt">
<td>
16:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">ECUADOR</td><td align="right">1</td><td align="left">0</td><td align="left">IRAN</td><td bgcolor="Red">
1
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>55</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>MARTINEZ</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>90</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/redcard.gif\' alt=\'red card\'></td><td nowrap=nowrap>NEJAD</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">90<img align="top" width="17" height="16" border="0" src="images/redcard.gif" alt="red card">NEJAD</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl04_CompGames1_lblCompName">&nbsp;ITALY - FA CUP - ROUND 16</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl04_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
16:00
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">FIORENTINA</td><td align="right">0</td><td align="left">1</td><td align="left">TORINO</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>19</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BIANCHI</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">19<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">BIANCHI</a>
</td>
</tr><tr class="row_alt">
<td>
20:00
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">ROMA</td><td align="right">2</td><td align="left">0</td><td align="left">BOLOGNA</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>82</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>VUCINIC</td></tr><tr><td>86</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>VUCINIC</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">86<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">VUCINIC</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl05_CompGames1_lblCompName">&nbsp;ITALY - SERIE C1A</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl05_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
13:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">PRO SESTO</td><td align="right">0</td><td align="left">0</td><td align="left">LECCO</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
&nbsp;
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl06_CompGames1_lblCompName">&nbsp;ITALY - SERIE C2A</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl06_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
13:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">MEZZOCORONA</td><td align="right">1</td><td align="left">3</td><td align="left">SAMBONIFACESE</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>55</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>48</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr><tr><td>66</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr><tr><td>74</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>&nbsp;</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">74<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">&nbsp;</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl07_CompGames1_lblCompName">&nbsp;SCOTLAND - FA CUP - THIRD ROUND</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl07_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
13:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">LOCHEE UTD</td><td align="right">1</td><td align="left">1</td><td align="left">AYR UTD</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Replayed if draw.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>86</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>HAGAN</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>60</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>WILLIAMS</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">86<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">HAGAN</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="text-align: left" class="header">
<span id="ctl00_ContentPlaceHolder1_Repeater1_ctl08_CompGames1_lblCompName">&nbsp;WORLD (FIFA) - FIFA CLUB WORLD CHAMPIONSHIP - SEMI</span></td>
</tr>
<tr>
<td>
<div>
<table cellspacing="0" cellpadding="2" rules="all" border="1" id="ctl00_ContentPlaceHolder1_Repeater1_ctl08_CompGames1_GridView1" width="100%">
<tr class="header" align="left">
<th scope="col">Start</th><th scope="col">Stat</th><th scope="col">Min</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="right" scope="col" width="30%">Home</th><th align="right" scope="col" width="10"> </th><th align="left" scope="col" width="10"> </th><th align="left" scope="col" width="30%">Away</th><th align="center" scope="col" width="17">R</th><th align="center" scope="col" width="17">P</th><th align="center" scope="col" width="17">O</th><th align="center" scope="col" width="17"><img src="images/info.gif" border="0" /></th><th scope="col" width="40%">Latest</th>
</tr><tr class="row">
<td>
10:30
</td><td>FT </td><td>-</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td align="right">PACHUCA (MEX)</td><td align="right">0</td><td align="left">2</td><td align="left">LIGA D.U. QUITO(ECU)</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
&nbsp;
</td><td>
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table border=0 cellpadding=2 cellspacing=0 width=250><tr align=left bgcolor=#ffffff><td><img src=\'images/info.gif\' /><b>Match information</b></td></tr><tr><td>Playing at Tokyo, Japan. Knock out.</td></tr></table>',HAUTO,VAUTO,WIDTH,250);" onmouseout="return nd();"><img src="images/info.gif" border="0" /></a>
</td><td align="left">
<a class="poplink" href="javascript:void(0);" onmouseover="return overlib('<table><tr valign=top><td width=200><table border=1 cellspacing=0 cellpadding=2><tr valign=top><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr></table></td><td width=200><table border=1 cellspacing=0 cellpadding=2><tr><td width=20>Min</td><td width=20>&nbsp;</td><td width=120>Player</td></tr><tr><td>4</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BIELER</td></tr><tr><td>26</td><td><img align=\'top\' width=\'17\' height=\'16\' border=\'0\' src=\'images/ball.gif\' alt=\'goal\'></td><td nowrap=nowrap>BOLANOS</td></tr></table></td></tr></table>',HAUTO,VAUTO,WIDTH,400);" onmouseout="return nd();">26<img align="top" width="17" height="16" border="0" src="images/ball.gif" alt="goal">BOLANOS</a>
</td>
</tr>
</table>
</div>
</td>
</tr>
</table>
<br />
</div>
<table border="0" cellpadding="5" cellspacing="0" style="width: 100%; height: 100%">
<tr class="newslinkspace">
<td style="width: 100%">
View complete <a href="ResultsArchive.aspx" class="newslink">archive of FootballScoresLive.com Match Results</a>
</td>
</tr>
</table>
</td>
<td width="125" align="right" valign="top">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="120" height="600">
<param name="movie" value="http://www.footballscoreslive.com/images/fslSMSNew.swf" />
<param name="quality" value="high" />
<embed src="http://www.footballscoreslive.com/images/fslSMSNew.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="120" height="600"></embed>
</object>
<script type="text/javascript"><!--
google_ad_client = "pub-1398285862595543";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td>
</tr>
<tr>
<td>
<img src="images/spacer.gif" width="174" height="1" alt="" /></td>
<td>
<img src="images/spacer.gif" width="220" height="1" alt="" /></td>
<td>
<img src="images/spacer.gif" width="281" height="1" alt="" /></td>
<td>
<img src="images/spacer.gif" width="125" height="1" alt="" /></td>
</tr>
<tr>
<td height="16" colspan="4" bgcolor="#000000">
&nbsp;|&nbsp;
<a class="navlink" href="disclaimer.aspx">Disclaimer</a>&nbsp;|&nbsp;
<a class="navlink" href="privacy.aspx">Privacy</a>&nbsp;|&nbsp;
<a href="aboutus.aspx" class="navlink">About Us</a>&nbsp;|&nbsp;
<a href="NewsArchive.aspx" class="navlink">News Archive</a>&nbsp;|&nbsp;
</td>
</tr>
</table>
</div>
<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="Xh65BZM36Ruds-iXM2l7LB-dXtc__8RpYzxQLE4V_YQ1" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="2ybQ+H9cPYUzPPi/5ComPVhU+jAYPdxVR+fOu2ZZbs2RxuAweOrbEg/qP5f+1OYLQI+oQJb98YQDTTMw+x86m7Np3/NYQHDjzX76RjJfW9nS6SnJVUi1nLHSh9c7wgfVB7UNjywCsU0hiMY1IUsYkR/rClTQE4j3Q4a4ub3Cqrn+b7fY3itatSObxb3L0Pq9E9vx/RpYI3jhA2RPCnO1WEQF2kEBAba5qqLwESWolSSdLqs5DRta8kholg0zw5EA5/R9+XiPqWwbk4n/TnTtdMwQq2iExD4eyjsLsE7bWnw=" />
<script type="text/xml-script">
<page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
<components>
<pageRequestManager id="_PageRequestManager" updatePanelIDs="ctl00$ContentPlaceHolder1$UpdatePanel1" asyncPostbackControlIDs="ctl00_ContentPlaceHolder1_DropDownList1" scriptManagerID="ctl00$ContentPlaceHolder1$ScriptManager1" form="aspnetForm" />
</components>
</page></script>
<script type="text/javascript">
</script>
</form>
</body>
</html>

View file

@ -1,144 +0,0 @@
<?php
error_reporting(E_ALL);
include_once('../simple_html_dom.php');
$html = file_get_html('google.htm');
//$html = file_get_html('youtube.htm');
//$html = file_get_html('Product.ibatis.xml');
$lang = '';
$l=$html->find('html', 0);
if ($l!==null)
$lang = $l->lang;
if ($lang!='')
$lang = 'lang="'.$lang.'"';
$charset = $html->find('meta[http-equiv*=content-type]', 0);
$target = array();
$query = '';
if (isset($_REQUEST['query'])) {
$query = $_REQUEST['query'];
$target = $html->find($query);
}
function stat_dom($dom) {
$count_text = 0;
$count_comm = 0;
$count_elem = 0;
$count_tag_end = 0;
$count_unknown = 0;
foreach($dom->nodes as $n) {
if ($n->nodetype==HDOM_TYPE_TEXT)
++$count_text;
if ($n->nodetype==HDOM_TYPE_COMMENT)
++$count_comm;
if ($n->nodetype==HDOM_TYPE_ELEMENT)
++$count_elem;
if ($n->nodetype==HDOM_TYPE_ENDTAG)
++$count_tag_end;
if ($n->nodetype==HDOM_TYPE_UNKNOWN)
++$count_unknown;
}
echo 'Total: '. count($dom->nodes).
', Text: '.$count_text.
', Commnet: '.$count_comm.
', Tag: '.$count_elem.
', End Tag: '.$count_tag_end.
', Unknown: '.$count_unknown;
}
function dump_my_html_tree($node, $show_attr=true, $deep=0, $last=true) {
$count = count($node->nodes);
if ($count>0) {
if($last)
echo '<li class="expandable lastExpandable"><div class="hitarea expandable-hitarea lastExpandable-hitarea"></div>&lt;<span class="tag">'.htmlspecialchars($node->tag).'</span>';
else
echo '<li class="expandable"><div class="hitarea expandable-hitarea"></div>&lt;<span class="tag">'.htmlspecialchars($node->tag).'</span>';
}
else {
$laststr = ($last===false) ? '' : ' class="last"';
echo '<li'.$laststr.'>&lt;<span class="tag">'.htmlspecialchars($node->tag).'</span>';
}
if ($show_attr) {
foreach($node->attr as $k=>$v) {
echo ' '.htmlspecialchars($k).'="<span class="attr">'.htmlspecialchars($node->$k).'</span>"';
}
}
echo '&gt;';
if ($node->tag==='text' || $node->tag==='comment') {
echo htmlspecialchars($node->innertext);
return;
}
if ($count>0) echo "\n<ul style=\"display: none;\">\n";
$i=0;
foreach($node->nodes as $c) {
$last = (++$i==$count) ? true : false;
dump_my_html_tree($c, $show_attr, $deep+1, $last);
}
if ($count>0)
echo "</ul>\n";
//if ($count>0) echo '&lt;/<span class="attr">'.htmlspecialchars($node->tag).'</span>&gt;';
echo "</li>\n";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html <?=$lang?>>
<head>
<?
if ($lang!='')
echo '<meta http-equiv="content-type" content="text/html; charset=utf-8"/>';
else if ($charset)
echo $charset;
else
echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>';
?>
<title>Simple HTML DOM Query Test</title>
<link rel="stylesheet" href="js/jquery.treeview.css" />
<link rel="stylesheet" href="js/screen.css" />
<style>
.tag { color: blue; }
.attr { color: #990033; }
</style>
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#html_tree").treeview({
control:"#sidetreecontrol",
collapsed: true,
prerendered: true
});
});
</script>
</head>
<body>
<div id="main">
<h4>Simple HTML DOM Test</h4>
<form name="form1" method="post" action="">
find: <input name="query" type="text" size="60" maxlength="60" value="<?=htmlspecialchars($query)?>">
<input type="submit" name="Submit" value="Go">
</form>
<br>
HTML STAT (<?stat_dom($html);?>)<br>
<br>
<div id="sidetreecontrol"><a href="?#">Collapse All</a> | <a href="?#">Expand All</a></div><br>
<ul class="treeview" id="html_tree">
<?
ob_start();
foreach($target as $e)
dump_my_html_tree($e, true);
ob_end_flush();
?>
</ul>
</div>
</body></html>

View file

@ -1,29 +0,0 @@
K 25
svn:wc:ra_dav:version-url
V 48
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js
END
jquery.treeview.css
K 25
svn:wc:ra_dav:version-url
V 68
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/jquery.treeview.css
END
jquery.treeview.js
K 25
svn:wc:ra_dav:version-url
V 67
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/jquery.treeview.js
END
screen.css
K 25
svn:wc:ra_dav:version-url
V 59
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/screen.css
END
jquery.js
K 25
svn:wc:ra_dav:version-url
V 58
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/jquery.js
END

View file

@ -1,167 +0,0 @@
10
dir
182
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom/trunk/app/js
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom
2008-12-14T19:02:48.351607Z
176
me578022
d0e60b4b-9046-0410-940c-b97530268c78
jquery.treeview.css
file
2010-08-17T19:13:52.459235Z
339ab1bbbaefa62f58c1fbf4459a7d0e
2008-12-14T19:02:48.351607Z
176
me578022
2589
jquery.treeview.js
file
2010-08-17T19:13:52.460235Z
3f81db67b7a973c8835ef5213e3b93c6
2008-12-14T19:02:48.351607Z
176
me578022
7839
images
dir
screen.css
file
2010-08-17T19:13:52.463235Z
b8e74072c3d1b740bce61509ce86fe68
2008-12-14T19:02:48.351607Z
176
me578022
623
jquery.js
file
2010-08-17T19:13:52.465235Z
957620aeffb2e5b562591b7a19928ea4
2008-12-14T19:02:48.351607Z
176
me578022
94443

View file

@ -1,68 +0,0 @@
.treeview, .treeview ul {
padding: 0;
margin: 0;
list-style: none;
}
.treeview ul {
background-color: white;
margin-top: 4px;
}
.treeview .hitarea {
background: url(images/treeview-default.gif) -64px -25px no-repeat;
height: 16px;
width: 16px;
margin-left: -16px;
float: left;
cursor: pointer;
}
/* fix for IE6 */
* html .hitarea {
display: inline;
float:none;
}
.treeview li {
margin: 0;
padding: 3px 0pt 3px 16px;
}
.treeview a.selected {
background-color: #eee;
}
#treecontrol { margin: 1em 0; display: none; }
.treeview .hover { color: red; cursor: pointer; }
.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; }
.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
.treeview .expandable-hitarea { background-position: -80px -3px; }
.treeview li.last { background-position: 0 -1766px }
.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); }
.treeview li.lastCollapsable { background-position: 0 -111px }
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url(images/treeview-red-line.gif); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); }
.treeview-black li { background-image: url(images/treeview-black-line.gif); }
.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); }
.treeview-gray li { background-image: url(images/treeview-gray-line.gif); }
.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); }
.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); }
.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); }
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; }
.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; }

View file

@ -1,251 +0,0 @@
/*
* Treeview 1.4 - jQuery plugin to hide and show branches of a tree
*
* http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
* http://docs.jquery.com/Plugins/Treeview
*
* Copyright (c) 2007 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
*
*/
;(function($) {
$.extend($.fn, {
swapClass: function(c1, c2) {
var c1Elements = this.filter('.' + c1);
this.filter('.' + c2).removeClass(c2).addClass(c1);
c1Elements.removeClass(c1).addClass(c2);
return this;
},
replaceClass: function(c1, c2) {
return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
},
hoverClass: function(className) {
className = className || "hover";
return this.hover(function() {
$(this).addClass(className);
}, function() {
$(this).removeClass(className);
});
},
heightToggle: function(animated, callback) {
animated ?
this.animate({ height: "toggle" }, animated, callback) :
this.each(function(){
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
if(callback)
callback.apply(this, arguments);
});
},
heightHide: function(animated, callback) {
if (animated) {
this.animate({ height: "hide" }, animated, callback);
} else {
this.hide();
if (callback)
this.each(callback);
}
},
prepareBranches: function(settings) {
if (!settings.prerendered) {
// mark last tree items
this.filter(":last-child:not(ul)").addClass(CLASSES.last);
// collapse whole tree, or only those marked as closed, anyway except those marked as open
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
}
// return all items with sublists
return this.filter(":has(>ul)");
},
applyClasses: function(settings, toggler) {
this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
toggler.apply($(this).next());
}).add( $("a", this) ).hoverClass();
if (!settings.prerendered) {
// handle closed ones first
this.filter(":has(>ul:hidden)")
.addClass(CLASSES.expandable)
.replaceClass(CLASSES.last, CLASSES.lastExpandable);
// handle open ones
this.not(":has(>ul:hidden)")
.addClass(CLASSES.collapsable)
.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
// create hitarea
this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
var classes = "";
$.each($(this).parent().attr("class").split(" "), function() {
classes += this + "-hitarea ";
});
$(this).addClass( classes );
});
}
// apply event to hitarea
this.find("div." + CLASSES.hitarea).click( toggler );
},
treeview: function(settings) {
settings = $.extend({
cookieId: "treeview"
}, settings);
if (settings.add) {
return this.trigger("add", [settings.add]);
}
if ( settings.toggle ) {
var callback = settings.toggle;
settings.toggle = function() {
return callback.apply($(this).parent()[0], arguments);
};
}
// factory for treecontroller
function treeController(tree, control) {
// factory for click handlers
function handler(filter) {
return function() {
// reuse toggle event handler, applying the elements to toggle
// start searching for all hitareas
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
// for plain toggle, no filter is provided, otherwise we need to check the parent element
return filter ? $(this).parent("." + filter).length : true;
}) );
return false;
};
}
// click on first element to collapse tree
$("a:eq(0)", control).click( handler(CLASSES.collapsable) );
// click on second to expand tree
$("a:eq(1)", control).click( handler(CLASSES.expandable) );
// click on third to toggle tree
$("a:eq(2)", control).click( handler() );
}
// handle toggle event
function toggler() {
$(this)
.parent()
// swap classes for hitarea
.find(">.hitarea")
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
// swap classes for parent li
.swapClass( CLASSES.collapsable, CLASSES.expandable )
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
// find child lists
.find( ">ul" )
// toggle them
.heightToggle( settings.animated, settings.toggle );
if ( settings.unique ) {
$(this).parent()
.siblings()
// swap classes for hitarea
.find(">.hitarea")
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
.replaceClass( CLASSES.collapsable, CLASSES.expandable )
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
.find( ">ul" )
.heightHide( settings.animated, settings.toggle );
}
}
function serialize() {
function binary(arg) {
return arg ? 1 : 0;
}
var data = [];
branches.each(function(i, e) {
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
});
$.cookie(settings.cookieId, data.join("") );
}
function deserialize() {
var stored = $.cookie(settings.cookieId);
if ( stored ) {
var data = stored.split("");
branches.each(function(i, e) {
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
});
}
}
// add treeview class to activate styles
this.addClass("treeview");
// prepare branches and find all tree items with child lists
var branches = this.find("li").prepareBranches(settings);
switch(settings.persist) {
case "cookie":
var toggleCallback = settings.toggle;
settings.toggle = function() {
serialize();
if (toggleCallback) {
toggleCallback.apply(this, arguments);
}
};
deserialize();
break;
case "location":
var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
if ( current.length ) {
current.addClass("selected").parents("ul, li").add( current.next() ).show();
}
break;
}
branches.applyClasses(settings, toggler);
// if control option is set, create the treecontroller and show it
if ( settings.control ) {
treeController(this, settings.control);
$(settings.control).show();
}
return this.bind("add", function(event, branches) {
$(branches).prev()
.removeClass(CLASSES.last)
.removeClass(CLASSES.lastCollapsable)
.removeClass(CLASSES.lastExpandable)
.find(">.hitarea")
.removeClass(CLASSES.lastCollapsableHitarea)
.removeClass(CLASSES.lastExpandableHitarea);
$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
});
}
});
// classes used by the plugin
// need to be styled via external stylesheet, see first example
var CLASSES = $.fn.treeview.classes = {
open: "open",
closed: "closed",
expandable: "expandable",
expandableHitarea: "expandable-hitarea",
lastExpandableHitarea: "lastExpandable-hitarea",
collapsable: "collapsable",
collapsableHitarea: "collapsable-hitarea",
lastCollapsableHitarea: "lastCollapsable-hitarea",
lastCollapsable: "lastCollapsable",
lastExpandable: "lastExpandable",
last: "last",
hitarea: "hitarea"
};
// provide backwards compability
$.fn.Treeview = $.fn.treeview;
})(jQuery);

View file

@ -1,24 +0,0 @@
html, body {height:100%; margin: 0; padding: 0; }
html>body {
font-size: 16px;
font-size: 68.75%;
} /* Reset Base Font Size */
body {
font-family: Verdana, helvetica, arial, sans-serif;
font-size: 68.75%;
background: #fff;
color: #333;
}
h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 }
h1 { font-size: large }
#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc;
background: url(bg.gif) repeat-x; text-align: center }
#banner a { color: white; }
#main { padding: 1em; }
a img { border: none; }

View file

@ -1,17 +0,0 @@
K 25
svn:wc:ra_dav:version-url
V 55
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/images
END
treeview-default.gif
K 25
svn:wc:ra_dav:version-url
V 76
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/images/treeview-default.gif
END
treeview-default-line.gif
K 25
svn:wc:ra_dav:version-url
V 81
/svnroot/simplehtmldom/!svn/ver/176/trunk/app/js/images/treeview-default-line.gif
END

View file

@ -1,96 +0,0 @@
10
dir
182
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom/trunk/app/js/images
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom
2008-12-14T19:02:48.351607Z
176
me578022
d0e60b4b-9046-0410-940c-b97530268c78
treeview-default.gif
file
2010-08-17T19:13:52.297225Z
46878a9b3ede269c4e234550c9c89cd0
2008-12-14T19:02:48.351607Z
176
me578022
has-props
1222
treeview-default-line.gif
file
2010-08-17T19:13:52.303226Z
5e3c0e0c48f48c23c45aef7b72c739c0
2008-12-14T19:02:48.351607Z
176
me578022
has-props
1993

View file

@ -1,5 +0,0 @@
K 13
svn:mime-type
V 24
application/octet-stream
END

View file

@ -1,68 +0,0 @@
.treeview, .treeview ul {
padding: 0;
margin: 0;
list-style: none;
}
.treeview ul {
background-color: white;
margin-top: 4px;
}
.treeview .hitarea {
background: url(images/treeview-default.gif) -64px -25px no-repeat;
height: 16px;
width: 16px;
margin-left: -16px;
float: left;
cursor: pointer;
}
/* fix for IE6 */
* html .hitarea {
display: inline;
float:none;
}
.treeview li {
margin: 0;
padding: 3px 0pt 3px 16px;
}
.treeview a.selected {
background-color: #eee;
}
#treecontrol { margin: 1em 0; display: none; }
.treeview .hover { color: red; cursor: pointer; }
.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; }
.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; }
.treeview .expandable-hitarea { background-position: -80px -3px; }
.treeview li.last { background-position: 0 -1766px }
.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); }
.treeview li.lastCollapsable { background-position: 0 -111px }
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url(images/treeview-red-line.gif); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); }
.treeview-black li { background-image: url(images/treeview-black-line.gif); }
.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); }
.treeview-gray li { background-image: url(images/treeview-gray-line.gif); }
.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); }
.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); }
.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); }
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; }
.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; }

View file

@ -1,251 +0,0 @@
/*
* Treeview 1.4 - jQuery plugin to hide and show branches of a tree
*
* http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
* http://docs.jquery.com/Plugins/Treeview
*
* Copyright (c) 2007 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $
*
*/
;(function($) {
$.extend($.fn, {
swapClass: function(c1, c2) {
var c1Elements = this.filter('.' + c1);
this.filter('.' + c2).removeClass(c2).addClass(c1);
c1Elements.removeClass(c1).addClass(c2);
return this;
},
replaceClass: function(c1, c2) {
return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
},
hoverClass: function(className) {
className = className || "hover";
return this.hover(function() {
$(this).addClass(className);
}, function() {
$(this).removeClass(className);
});
},
heightToggle: function(animated, callback) {
animated ?
this.animate({ height: "toggle" }, animated, callback) :
this.each(function(){
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
if(callback)
callback.apply(this, arguments);
});
},
heightHide: function(animated, callback) {
if (animated) {
this.animate({ height: "hide" }, animated, callback);
} else {
this.hide();
if (callback)
this.each(callback);
}
},
prepareBranches: function(settings) {
if (!settings.prerendered) {
// mark last tree items
this.filter(":last-child:not(ul)").addClass(CLASSES.last);
// collapse whole tree, or only those marked as closed, anyway except those marked as open
this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide();
}
// return all items with sublists
return this.filter(":has(>ul)");
},
applyClasses: function(settings, toggler) {
this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
toggler.apply($(this).next());
}).add( $("a", this) ).hoverClass();
if (!settings.prerendered) {
// handle closed ones first
this.filter(":has(>ul:hidden)")
.addClass(CLASSES.expandable)
.replaceClass(CLASSES.last, CLASSES.lastExpandable);
// handle open ones
this.not(":has(>ul:hidden)")
.addClass(CLASSES.collapsable)
.replaceClass(CLASSES.last, CLASSES.lastCollapsable);
// create hitarea
this.prepend("<div class=\"" + CLASSES.hitarea + "\"/>").find("div." + CLASSES.hitarea).each(function() {
var classes = "";
$.each($(this).parent().attr("class").split(" "), function() {
classes += this + "-hitarea ";
});
$(this).addClass( classes );
});
}
// apply event to hitarea
this.find("div." + CLASSES.hitarea).click( toggler );
},
treeview: function(settings) {
settings = $.extend({
cookieId: "treeview"
}, settings);
if (settings.add) {
return this.trigger("add", [settings.add]);
}
if ( settings.toggle ) {
var callback = settings.toggle;
settings.toggle = function() {
return callback.apply($(this).parent()[0], arguments);
};
}
// factory for treecontroller
function treeController(tree, control) {
// factory for click handlers
function handler(filter) {
return function() {
// reuse toggle event handler, applying the elements to toggle
// start searching for all hitareas
toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() {
// for plain toggle, no filter is provided, otherwise we need to check the parent element
return filter ? $(this).parent("." + filter).length : true;
}) );
return false;
};
}
// click on first element to collapse tree
$("a:eq(0)", control).click( handler(CLASSES.collapsable) );
// click on second to expand tree
$("a:eq(1)", control).click( handler(CLASSES.expandable) );
// click on third to toggle tree
$("a:eq(2)", control).click( handler() );
}
// handle toggle event
function toggler() {
$(this)
.parent()
// swap classes for hitarea
.find(">.hitarea")
.swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
// swap classes for parent li
.swapClass( CLASSES.collapsable, CLASSES.expandable )
.swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
// find child lists
.find( ">ul" )
// toggle them
.heightToggle( settings.animated, settings.toggle );
if ( settings.unique ) {
$(this).parent()
.siblings()
// swap classes for hitarea
.find(">.hitarea")
.replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea )
.replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea )
.end()
.replaceClass( CLASSES.collapsable, CLASSES.expandable )
.replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable )
.find( ">ul" )
.heightHide( settings.animated, settings.toggle );
}
}
function serialize() {
function binary(arg) {
return arg ? 1 : 0;
}
var data = [];
branches.each(function(i, e) {
data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0;
});
$.cookie(settings.cookieId, data.join("") );
}
function deserialize() {
var stored = $.cookie(settings.cookieId);
if ( stored ) {
var data = stored.split("");
branches.each(function(i, e) {
$(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ]();
});
}
}
// add treeview class to activate styles
this.addClass("treeview");
// prepare branches and find all tree items with child lists
var branches = this.find("li").prepareBranches(settings);
switch(settings.persist) {
case "cookie":
var toggleCallback = settings.toggle;
settings.toggle = function() {
serialize();
if (toggleCallback) {
toggleCallback.apply(this, arguments);
}
};
deserialize();
break;
case "location":
var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); });
if ( current.length ) {
current.addClass("selected").parents("ul, li").add( current.next() ).show();
}
break;
}
branches.applyClasses(settings, toggler);
// if control option is set, create the treecontroller and show it
if ( settings.control ) {
treeController(this, settings.control);
$(settings.control).show();
}
return this.bind("add", function(event, branches) {
$(branches).prev()
.removeClass(CLASSES.last)
.removeClass(CLASSES.lastCollapsable)
.removeClass(CLASSES.lastExpandable)
.find(">.hitarea")
.removeClass(CLASSES.lastCollapsableHitarea)
.removeClass(CLASSES.lastExpandableHitarea);
$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler);
});
}
});
// classes used by the plugin
// need to be styled via external stylesheet, see first example
var CLASSES = $.fn.treeview.classes = {
open: "open",
closed: "closed",
expandable: "expandable",
expandableHitarea: "expandable-hitarea",
lastExpandableHitarea: "lastExpandable-hitarea",
collapsable: "collapsable",
collapsableHitarea: "collapsable-hitarea",
lastCollapsableHitarea: "lastCollapsable-hitarea",
lastCollapsable: "lastCollapsable",
lastExpandable: "lastExpandable",
last: "last",
hitarea: "hitarea"
};
// provide backwards compability
$.fn.Treeview = $.fn.treeview;
})(jQuery);

View file

@ -1,24 +0,0 @@
html, body {height:100%; margin: 0; padding: 0; }
html>body {
font-size: 16px;
font-size: 68.75%;
} /* Reset Base Font Size */
body {
font-family: Verdana, helvetica, arial, sans-serif;
font-size: 68.75%;
background: #fff;
color: #333;
}
h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 }
h1 { font-size: large }
#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc;
background: url(bg.gif) repeat-x; text-align: center }
#banner a { color: white; }
#main { padding: 1em; }
a img { border: none; }

View file

@ -1,41 +0,0 @@
K 25
svn:wc:ra_dav:version-url
V 49
/svnroot/simplehtmldom/!svn/ver/169/trunk/example
END
example_extract_html.php
K 25
svn:wc:ra_dav:version-url
V 74
/svnroot/simplehtmldom/!svn/ver/133/trunk/example/example_extract_html.php
END
example_basic_selector.php
K 25
svn:wc:ra_dav:version-url
V 76
/svnroot/simplehtmldom/!svn/ver/133/trunk/example/example_basic_selector.php
END
example_modify_contents.php
K 25
svn:wc:ra_dav:version-url
V 77
/svnroot/simplehtmldom/!svn/ver/133/trunk/example/example_modify_contents.php
END
simple_html_dom_utility.php
K 25
svn:wc:ra_dav:version-url
V 77
/svnroot/simplehtmldom/!svn/ver/133/trunk/example/simple_html_dom_utility.php
END
example_advanced_selector.php
K 25
svn:wc:ra_dav:version-url
V 79
/svnroot/simplehtmldom/!svn/ver/133/trunk/example/example_advanced_selector.php
END
example_callback.php
K 25
svn:wc:ra_dav:version-url
V 70
/svnroot/simplehtmldom/!svn/ver/134/trunk/example/example_callback.php
END

View file

@ -1,235 +0,0 @@
10
dir
182
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom/trunk/example
https://simplehtmldom.svn.sourceforge.net/svnroot/simplehtmldom
2008-10-29T19:08:25.076520Z
169
me578022
d0e60b4b-9046-0410-940c-b97530268c78
example_extract_html.php
file
2010-08-17T19:13:52.948263Z
5815bb5f7500b9a88ecc70a123893c1b
2008-07-25T12:31:14.828880Z
133
me578022
has-props
110
example_basic_selector.php
file
2010-08-17T19:13:52.951263Z
217a2d96745c826e96d13c055e31638b
2008-07-25T12:31:14.828880Z
133
me578022
976
example_modify_contents.php
file
2010-08-17T19:13:52.953263Z
e6fcf41d1b2a1867b0314f80efe7eb9a
2008-07-25T12:31:14.828880Z
133
me578022
378
simple_html_dom_utility.php
file
2010-08-17T19:13:52.955263Z
3d75d01886f4fb7bc15a8f9a4b204428
2008-07-25T12:31:14.828880Z
133
me578022
927
scraping
dir
example_advanced_selector.php
file
2010-08-17T19:13:52.956263Z
273077bc1a0c8945acc1f318b60d8476
2008-07-25T12:31:14.828880Z
133
me578022
1521
example_callback.php
file
2010-08-17T19:13:52.964264Z
0d52be96ec57b5b40efb8588898159e4
2008-07-25T12:32:01.594191Z
134
me578022
has-props
604

View file

@ -1,13 +0,0 @@
K 13
svn:eol-style
V 6
native
K 12
svn:keywords
V 11
Id Rev Date
K 13
svn:mime-type
V 10
text/x-php
END

View file

@ -1,13 +0,0 @@
K 13
svn:eol-style
V 6
native
K 12
svn:keywords
V 11
Id Rev Date
K 13
svn:mime-type
V 10
text/x-php
END

View file

@ -1,54 +0,0 @@
<?php
// example of how to use advanced selector features
include('../simple_html_dom.php');
// -----------------------------------------------------------------------------
// descendant selector
$str = <<<HTML
<div>
<div>
<div class="foo bar">ok</div>
</div>
</div>
HTML;
$html = str_get_html($str);
echo $html->find('div div div', 0)->innertext . '<br>'; // result: "ok"
// -----------------------------------------------------------------------------
// nested selector
$str = <<<HTML
<ul id="ul1">
<li>item:<span>1</span></li>
<li>item:<span>2</span></li>
</ul>
<ul id="ul2">
<li>item:<span>3</span></li>
<li>item:<span>4</span></li>
</ul>
HTML;
$html = str_get_html($str);
foreach($html->find('ul') as $ul) {
foreach($ul->find('li') as $li)
echo $li->innertext . '<br>';
}
// -----------------------------------------------------------------------------
// parsing checkbox
$str = <<<HTML
<form name="form1" method="post" action="">
<input type="checkbox" name="checkbox1" value="checkbox1" checked>item1<br>
<input type="checkbox" name="checkbox2" value="checkbox2">item2<br>
<input type="checkbox" name="checkbox3" value="checkbox3" checked>item3<br>
</form>
HTML;
$html = str_get_html($str);
foreach($html->find('input[type=checkbox]') as $checkbox) {
if ($checkbox->checked)
echo $checkbox->name . ' is checked<br>';
else
echo $checkbox->name . ' is not checked<br>';
}
?>

View file

@ -1,37 +0,0 @@
<?php
// example of how to use basic selector to retrieve HTML contents
include('../simple_html_dom.php');
// get DOM from URL or file
$html = file_get_html('http://www.google.com/');
// find all link
foreach($html->find('a') as $e)
echo $e->href . '<br>';
// find all image
foreach($html->find('img') as $e)
echo $e->src . '<br>';
// find all image with full tag
foreach($html->find('img') as $e)
echo $e->outertext . '<br>';
// find all div tags with id=gbar
foreach($html->find('div#gbar') as $e)
echo $e->innertext . '<br>';
// find all span tags with class=gb1
foreach($html->find('span.gb1') as $e)
echo $e->outertext . '<br>';
// find all td tags with attribite align=center
foreach($html->find('td[align=center]') as $e)
echo $e->innertext . '<br>';
// extract text from table
echo $html->find('td[align="center"]', 1)->plaintext.'<br><hr>';
// extract text from HTML
echo $html->plaintext;
?>

View file

@ -1,28 +0,0 @@
<?php
include_once('../simple_html_dom.php');
// 1. Write a function with parameter "$element"
function my_callback($element) {
if ($element->tag=='input')
$element->outertext = 'input';
if ($element->tag=='img')
$element->outertext = 'img';
if ($element->tag=='a')
$element->outertext = 'a';
}
// 2. create HTML Dom
$html = file_get_html('http://www.google.com/');
// 3. Register the callback function with it's function name
$html->set_callback('my_callback');
// 4. Callback function will be invoked while dumping
echo $html;
?>

View file

@ -1,5 +0,0 @@
<?php
include_once('../simple_html_dom.php');
echo file_get_html('http://www.google.com/')->plaintext;
?>

View file

@ -1,18 +0,0 @@
<?php
// example of how to modify HTML contents
include('../simple_html_dom.php');
// get DOM from URL or file
$html = file_get_html('http://www.google.com/');
// remove all image
foreach($html->find('img') as $e)
$e->outertext = '';
// replace all input
foreach($html->find('input') as $e)
$e->outertext = '[INPUT]';
// dump contents
echo $html;
?>

View file

@ -1,35 +0,0 @@
<?php
include_once('../simple_html_dom.php');
// -----------------------------------------------------------------------------
// remove HTML comments
function html_no_comment($url) {
// create HTML DOM
$html = file_get_html($url);
// remove all comment elements
foreach($html->find('comment') as $e)
$e->outertext = '';
$ret = $html->save();
// clean up memory
$html->clear();
unset($html);
return $ret;
}
// -----------------------------------------------------------------------------
// search elements that contains an specific text
function find_contains($html, $selector, $keyword, $index=-1) {
$ret = array();
foreach ($html->find($selector) as $e) {
if (strpos($e->innertext, $keyword)!==false)
$ret[] = $e;
}
if ($index<0) return $ret;
return (isset($ret[$index])) ? $ret[$index] : null;
}
?>

View file

@ -1,54 +0,0 @@
<?php
// example of how to use advanced selector features
include('../simple_html_dom.php');
// -----------------------------------------------------------------------------
// descendant selector
$str = <<<HTML
<div>
<div>
<div class="foo bar">ok</div>
</div>
</div>
HTML;
$html = str_get_html($str);
echo $html->find('div div div', 0)->innertext . '<br>'; // result: "ok"
// -----------------------------------------------------------------------------
// nested selector
$str = <<<HTML
<ul id="ul1">
<li>item:<span>1</span></li>
<li>item:<span>2</span></li>
</ul>
<ul id="ul2">
<li>item:<span>3</span></li>
<li>item:<span>4</span></li>
</ul>
HTML;
$html = str_get_html($str);
foreach($html->find('ul') as $ul) {
foreach($ul->find('li') as $li)
echo $li->innertext . '<br>';
}
// -----------------------------------------------------------------------------
// parsing checkbox
$str = <<<HTML
<form name="form1" method="post" action="">
<input type="checkbox" name="checkbox1" value="checkbox1" checked>item1<br>
<input type="checkbox" name="checkbox2" value="checkbox2">item2<br>
<input type="checkbox" name="checkbox3" value="checkbox3" checked>item3<br>
</form>
HTML;
$html = str_get_html($str);
foreach($html->find('input[type=checkbox]') as $checkbox) {
if ($checkbox->checked)
echo $checkbox->name . ' is checked<br>';
else
echo $checkbox->name . ' is not checked<br>';
}
?>

View file

@ -1,37 +0,0 @@
<?php
// example of how to use basic selector to retrieve HTML contents
include('../simple_html_dom.php');
// get DOM from URL or file
$html = file_get_html('http://www.google.com/');
// find all link
foreach($html->find('a') as $e)
echo $e->href . '<br>';
// find all image
foreach($html->find('img') as $e)
echo $e->src . '<br>';
// find all image with full tag
foreach($html->find('img') as $e)
echo $e->outertext . '<br>';
// find all div tags with id=gbar
foreach($html->find('div#gbar') as $e)
echo $e->innertext . '<br>';
// find all span tags with class=gb1
foreach($html->find('span.gb1') as $e)
echo $e->outertext . '<br>';
// find all td tags with attribite align=center
foreach($html->find('td[align=center]') as $e)
echo $e->innertext . '<br>';
// extract text from table
echo $html->find('td[align="center"]', 1)->plaintext.'<br><hr>';
// extract text from HTML
echo $html->plaintext;
?>

View file

@ -1,28 +0,0 @@
<?php
include_once('../simple_html_dom.php');
// 1. Write a function with parameter "$element"
function my_callback($element) {
if ($element->tag=='input')
$element->outertext = 'input';
if ($element->tag=='img')
$element->outertext = 'img';
if ($element->tag=='a')
$element->outertext = 'a';
}
// 2. create HTML Dom
$html = file_get_html('http://www.google.com/');
// 3. Register the callback function with it's function name
$html->set_callback('my_callback');
// 4. Callback function will be invoked while dumping
echo $html;
?>

View file

@ -1,5 +0,0 @@
<?php
include_once('../simple_html_dom.php');
echo file_get_html('http://www.google.com/')->plaintext;
?>

View file

@ -1,18 +0,0 @@
<?php
// example of how to modify HTML contents
include('../simple_html_dom.php');
// get DOM from URL or file
$html = file_get_html('http://www.google.com/');
// remove all image
foreach($html->find('img') as $e)
$e->outertext = '';
// replace all input
foreach($html->find('input') as $e)
$e->outertext = '[INPUT]';
// dump contents
echo $html;
?>

Some files were not shown because too many files have changed in this diff Show more